SuperAPI AI 工具集

release-guard

通用与其它

查看项目

更新于 10-15 20:30

技能介绍

用途:Release Guard 是一个严格的 GitHub 发布守门技能,用于阻止过早或不安全的发布,确保发布流程符合规范。

主要能力:

  • 强制发布只能来自 main 分支,且对应 PR 已合并(state=CLOSED,baseRefName=main)。
  • 要求所有 CI 任务必须 COMPLETE + SUCCESS,不允许存在排队中的任务。
  • 校验分支保护是否要求状态检查。
  • 创建发布前,版本号必须与标签匹配(cargo-dist 要求)。
  • 提供失败响应,明确列出违规项与修复步骤。

使用方式:

  • PR 检查:gh pr view $PR_NUM --json state,baseRefName,必须 state=CLOSED 且 baseRefName=main。
  • 分支检查:git branch --show-current 与 gh repo view --json default_branch,非 main 则失败。
  • CI 检查:gh run list --branch main --limit 5 --json status,conclusion,全部需 completed + success。
  • 工作区检查:git status 需干净。
  • 版本检查:grep '^version =' Cargo.toml 必须与标签一致(不含 v 前缀)。
  • 通过后:执行 cargo semver-checks check-release --workspace,打语义化标签 vMAJOR.MINOR.PATCH,优先使用 cargo release patch|minor|major,或回退 gh release create v1.2.3 --generate-notes --target main,执行前需确认。

适用场景:适用于 Rust 项目在 GitHub 上发布新版本前的自动化守门,尤其配合 cargo-dist 使用。

限制:资料未提供安装方式、收费信息、平台支持范围及具体效果数据。需要安装 gh CLI。版本不匹配会导致 cargo-dist 失败,例如标签 v0.1.22 与 Cargo.toml 中 0.1.21 不一致时,会报错 "This workspace doesn't have anything for dist to Release!"。修复方法是始终在推送标签前先提升版本,可使用 cargo release patch|minor|major 原子化处理。