SuperAPI AI 工具集

ci-validation-gates

部署与运维

查看项目

更新于 10-15 21:12

技能介绍

用途:为发布类 CI 工作流提供防御性校验,避免因版本格式、令牌类型、注册表一致性和草稿发布等环节出错导致发布事故。资料称这些模式来自 v0.8.22 发布灾难,当时非法 semver、错误令牌类型、缺失重试逻辑和草稿发布共同造成了数小时故障。

主要能力:1) Semver 校验门:每次 npm 发布前用 npx semver 校验版本,四位版本(如 0.8.21.4)不是合法 semver,npm 会将其破坏;只允许 X.Y.Z 或带预发布标签的 X.Y.Z-tag.N。2) NPM 令牌类型验证:NPM_TOKEN 必须是 Automation 令牌,不能用带 2FA 的 User 令牌,否则 CI 因无法提供 OTP 而报 EOTP;Automation 令牌需在 npmjs.com 的 Settings → Access Tokens → Automation 创建。3) 注册表传播重试:npm 存在最终一致性,发布后包不一定立即可查询,传播通常 5-30 秒、极端情况最长 2 分钟;验证步骤应 5 次尝试、每次间隔 15 秒,并记录尝试进度。4) 草稿发布检测:草稿发布不会触发 release: published 事件,工作流必须监听 published 而非 created;若用 workflow_dispatch,需先通过 GitHub API 确认发布已发布。5) 构建脚本保护:任何发布构建前设置 SKIP_BUILD_BUMP=1(Windows 用 $env:SKIP_BUILD_BUMP = "1"),因为 bump-build.mjs 仅用于开发构建并会静默改版本。

适用场景:npm 包或其他类型发布流水线、GitHub Actions 发布工作流、需要防御发布事故的团队。限制:文中主要针对 npm 与 GitHub Releases,未提供其他平台或非 npm 生态的适配方案;具体版本号、包名等需按实际项目替换。

来源:https://www.skills.sh/dotnet/maui-labs/ci-validation-gates