feat!: publish as @dsh-plugin/session-delete with an automated Gitea npm release
publish / npm (push) Failing after 1m49s
publish / npm (push) Failing after 1m49s
The registry owner is the scope the package must publish under, so the name moves from @local/ to @dsh-plugin/ in all three places that must agree: package.json, cordis.patch.yml, and the client module id. `private` goes away because npm refuses to publish such a package, and publishConfig pins the registry to this organization's npm endpoint. The tag workflow publishes whatever version the pushed v* tag names, using the built-in Gitea job token, and refuses a tag that disagrees with package.json.
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
# 把打了 v* 标签的版本发布到 Gitea 的 npm 包仓库。
|
||||
#
|
||||
# 触发方式:
|
||||
# 1. 推送版本标签(推荐):git tag -a v1.0.1 -m "..." && git push origin v1.0.1
|
||||
# 2. 仓库 → Actions → 选择本工作流 → Run workflow(手动,发布当前 commit 的版本)
|
||||
#
|
||||
# 需要的权限:
|
||||
# 本工作流用 Gitea 内置的任务令牌 ${{ secrets.GITEA_TOKEN }} 发布,无需额外配置密钥。
|
||||
# 组织(或仓库)Settings → Actions → General 里的 token 权限不能被限制到读,
|
||||
# 且 packages 需要写权限 —— 工作流里的 permissions: 已经声明,但仍会被管理员配置的上限(clamping)压回。
|
||||
# 如果实例把默认权限设为 Restricted,请在这里(或组织级)确认 packages 至少为 write。
|
||||
#
|
||||
# 依赖前提:
|
||||
# - 实例启用了 Actions,且注册了 act_runner(否则工作流只会排队)。
|
||||
# - runner 需要能拉取 actions/checkout 与 actions/setup-node(默认从 github.com 取)。
|
||||
# 若 runner 在无外网环境,请在 app.ini 里设 actions.DEFAULT_ACTIONS_URL = self 并把这两个
|
||||
# action 镜像到自己的实例上。
|
||||
# - runs-on 的标签要与 runner 配置的标签一致(默认 ubuntu-latest;自建 runner 常用 docker/ubuntu-22.04 等)。
|
||||
name: publish
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'v*'
|
||||
workflow_dispatch:
|
||||
|
||||
# 读取代码用于 checkout,向本组织写包。
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
||||
jobs:
|
||||
npm:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
REGISTRY: https://gitea.iwake.top/api/packages/dsh-plugin/npm/
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '22'
|
||||
registry-url: https://gitea.iwake.top/api/packages/dsh-plugin/npm/
|
||||
|
||||
- name: Check the tag against package.json
|
||||
run: |
|
||||
set -eu
|
||||
version="$(node -p "require('./package.json').version")"
|
||||
name="$(node -p "require('./package.json').name")"
|
||||
case "${GITHUB_REF}" in
|
||||
refs/tags/*)
|
||||
tag="${GITHUB_REF_NAME#v}"
|
||||
if [ "$tag" != "$version" ]; then
|
||||
echo "标签 ${GITHUB_REF_NAME} 与 package.json 的版本 ${version} 不一致" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
echo "将发布 ${name}@${version}"
|
||||
|
||||
- name: Pack (preview the published contents)
|
||||
run: npm pack --dry-run
|
||||
|
||||
- name: Publish
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||
run: |
|
||||
set -eu
|
||||
# 作用域与默认注册表都指向本组织的 npm 仓库;token 由 setup-node 写进 .npmrc。
|
||||
npm config set @dsh-plugin:registry "${REGISTRY}"
|
||||
npm publish --registry "${REGISTRY}"
|
||||
Reference in New Issue
Block a user