用途:端到端完成 glab-axi 的版本发布。发布到 npm 是自动化的:创建 GitHub Release 会触发 .github/workflows/release.yml,该工作流执行构建、测试,然后运行 npm publish。发布说明取自 CHANGELOG 中对应版本的段落,该段落是说明的唯一来源。
主要能力与用法:
- 一次性配置(维护者):发布任务使用 npm Trusted Publishing(OIDC)认证,没有 npm token,不要创建 NPM_TOKEN 密钥。需在 npmjs.com 的 Packages -> glab-axi -> Settings -> Trusted publishing 注册 GitHub Actions 发布者,字段须与仓库完全一致:Organization or user 为 karotkriss(无前导 @)、Repository 为 glab-axi、Workflow filename 为 release.yml(仅文件名,保留 .yml)、Allowed actions 至少选一项(本工作流运行 npm publish)、Environment name 为 npm-publish。匹配是精确的,工作流文件重命名或 environment 变更都需同步更新注册,否则发布失败。
- 不发布的试运行:gh workflow run release.yml -f dry_run=true,随后可用 gh run watch 查看。试运行会完整检出、安装、构建、测试,校验 Node 与 npm 满足可信发布下限,并执行 npm publish --dry-run 打包校验,但不上传。注意试运行不验证认证,npm publish --dry-run 不会向注册表请求凭据,因此无论可信发布者是否配置正确都会通过;只有真实发布才会走 OIDC 握手。
- 正式发布:按 semver 选定 X.Y.Z,在默认分支的干净检出上操作。将 CHANGELOG 中 ## [Unreleased] 改名为 ## [X.Y.Z] - YYYY-MM-DD,并在其上方新增空的 ## [Unreleased],在文件底部补充引用链接([Unreleased] 与 [X.Y.Z] 两行,保留旧版本的链接行),删除新段落中空的 Added/Changed/Fixed 子标题。然后执行 npm version X.Y.Z --no-git-tag-version 与 npm run skill:build(后者重新生成技能,使固定的 npx -y glab-axi@X.Y.Z 调用跟随新版本,跳过会导致 CI 的 skill:check 失败)。提交 CHANGELOG.md、package.json、package-lock.json、skills/glab-axi/SKILL.md,提交信息如 release: vX.Y.Z,经正常评审流程合入默认分支后再打标签:git tag vX.Y.Z、git push origin HEAD、git push origin vX.Y.Z。最后用 awk 从 CHANGELOG 提取该版本段落作为发布说明,通过 gh release create