SuperAPI AI 工具集

actions-npm

部署与运维

查看项目

更新于 10-16 09:13

技能介绍

Actions NPM Publish (Trusted Publishing) 用于在创建或调试通过可信发布(Trusted Publishing / OIDC)发布 npm 包的 GitHub Actions 工作流时提供指导,触发场景包括 CI 中的 npm publish、ENEEDAUTH 等认证问题。

用途 该技能面向需要在 GitHub Actions 中发布 npm 包的场景,核心是用 GitHub OIDC 替代长期有效的 NPM_TOKEN,从而避免在仓库中保存长期发布凭证。

主要能力

  • 提供工作流模板:assets/release-npm.yml,可直接复制到 .github/workflows/ 使用。
  • 说明可信发布的工作机制:workflow 运行在 GitHub-hosted runner 上;job 具备 permissions.id-token: write;npm / actions/setup-node 用 GitHub OIDC 身份换取发布凭证;npm publish 使用该凭证发布;不需要 NPM_TOKEN secret。
  • 列出已验证的要求:workflow 必须在 .github/workflows/;必须使用 GitHub-hosted runner;必须有 id-token: write;npm trusted publisher 必须精确匹配仓库和 workflow 文件名(例如 release-auth-sdk.yml);package.json.repository.url 必须匹配 GitHub 仓库 URL;推荐 actions/setup-node@v6;推荐 Node 24,如果保留 Node 22 需确认 npm 已升级到 11.5.1+。
  • 总结重要注意事项:使用 actions/setup-node@v6 时不要再手动设置 NODE_AUTH_TOKEN: "",按实测这种组合会导致 ENEEDAUTH,优先让 setup-node 自己处理发布凭证;npm notice Publishing to https://registry.npmjs.org/ 之后再报 E404,通常说明认证已通过,但 npm 侧的包权限、scope 权限或 trusted publisher 元数据仍不匹配;E422 ... Unsupported GitHub Actions source repository visibility: "private" 表示 private GitHub 仓库不支持 --provenance,此时去掉 --provenance,保留普通 trusted publishing 即可;provenance 目前只适用于 public source repository。
  • 给出发布命令:public GitHub repo 使用 npm publish --provenance --access public;private GitHub repo 使用 npm publish --access public。
  • 提供快速检查清单:actions/setup-node@v6;node-version: "24";registry-url: https://registry.npmjs.org/;不配置 NPM_TOKEN;不手动覆盖 NODE_AUTH_TOKEN;npm 后台 trusted publisher 中的 workflow filename 与实际文件名完全一致。

使用方式 将 assets/release-npm.yml 复制到 .github/workflows/ 目录,按上述要求配置 runner、权限、Node 版本与 registry-url,并在 npm 后台配置与仓库及 workflow 文件名精确匹配的 trusted publisher。发布时根据仓库可见性选择对应 npm publish 命令。

适用场景 适用于在 GitHub Actions CI 中发布 npm 包,尤其是希望使用 OIDC 可信发布、避免使用 NPM_TOKEN 的项目,以及排查 ENEEDAUTH、E404、E422 等发布认证与 provenance 相关问题的场景。

限制 provenance 目前只适用于 public source repository;private GitHub 仓库不支持 --provenance。可信发布要求 workflow 位于 .github/workflows/、使用 GitHub-hosted runner、具备 id-token: write,且 npm trusted publisher 的仓库与 workflow 文件名必须精确匹配。其他未在资料中说明的限制暂未提供。