SuperAPI AI 工具集

release

部署与运维

查看项目

更新于 10-15 10:19

技能介绍

发版(Release)

发版不只是打 tag,是一个质量门禁流程:安全审查→生成版本→创建 Release。

用途

该技能用于自动化完整发版流程,覆盖版本号生成、changelog 生成、git tag、GitHub Release(或本地 changelog 文件)。与其他技能的关系为:task-finish(功能收尾)→ security-audit(发版前安全审查)→ 审查通过后执行 release(本 skill)。

第一步:发版前检查

发版前必须确认以下条件:

  1. 代码状态检查
  • 工作区干净?(无未提交改动)
  • 在正确的分支上?(main / release branch)
  • 已合并所有需要的 PR?
  1. CI 状态检查(如果有)
  • GitHub Actions 全绿?
  1. 安全审查
  • 提示用户:是否需要跑 security-audit?(上线服务强烈建议)
  1. 测试验证
  • 核心功能是否经过验证?

检查命令:

工作区状态

git status

CI 状态(GitHub)

gh run list --limit 5

未合并的 PR

gh pr list

任何检查不通过,提示用户处理后再继续,不强行发版。

第二步:确定版本号

CalVer 格式:YYYY.MM.PATCH

各部分的含义:

  • YYYY:年份,示例 2026
  • MM:月份(不补零),示例 4
  • PATCH:当月第几次发布(从 1 开始),示例 1, 2, 3...

版本号生成逻辑:

获取当前年月

YEAR=$(date +%Y) MONTH=$(date +%-m)

查找当月已有的最大版本号

LATEST=$(git tag --list "${YEAR}.${MONTH}.*" --sort=-version:refname | head -1)

if [ -z "$LATEST" ]; then

当月第一次发布

VERSION="${YEAR}.${MONTH}.1" else

递增 PATCH

PATCH=$(echo "$LATEST" | awk -F. '{print $3 + 1}') VERSION="${YEAR}.${MONTH}.${PATCH}" fi

echo "版本号: $VERSION"

示例:

  • 2026 年 4 月第 1 次发布 → 2026.4.1
  • 2026 年 4 月第 2 次发布 → 2026.4.2
  • 2026 年 5 月第 1 次发布 → 2026.5.1

第三步:生成 Changelog

从 git log 提取:

获取上一个 tag 到 HEAD 的所有提交

PREV_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")

if [ -z "$PREV_TAG" ]; then

没有历史 tag,取所有提交

COMMITS=$(git log --oneline --pretty=format:"%s") else COMMITS=$(git log ${PREV_TAG}..HEAD --oneline --pretty=format:"%s") fi

按 type 分组:根据 commit message 的 type(scope): desc 格式自动分组,示例:

Changelog — v2026.4.1

新功能(Features)

  • auth: 支持 OAuth2 第三方登录
  • export: 用户数据导出功能

修复(Fixes)

  • login: 修复密码错误时返回 500 的问题
  • cache: 修复缓存 key 冲突

重构(Refactoring)

  • api: 统一错误响应格式

其他

  • docs: 更新 API 文档
  • test: 补充登录模块测试用例

分组规则:

  • feat → 新功能(Features)
  • fix → 修复(Fixes)
  • refactor → 重构(Refactoring)
  • perf → 性能优化(Performance)
  • docs, test, chore, ci → 其他(如果没有 feat/fix/refactor 可省略)

Changelog 输出:

  • 有 GitHub:嵌入 GitHub Release 的 body
  • 无 GitHub:写入 docs/changelog/YYYY-MM-DD-v<版本号>.md

第四步:创建 Release

方式 A:GitHub Release(优先)

创建 tag

git tag -a "v${VERSION}" -m "Release v${VERSION}" git push origin "v${VERSION}"

创建 GitHub Release

gh release create "v${VERSION}"
--title "v${VERSION}"
--notes "$(cat <<'EOF' <changelog 内容> EOF )"

方式 B:本地 Changelog 文件

如果项目不在 GitHub 或不需要 GitHub Release:

创建 tag

git tag -a "v${VERSION}" -m "Release v${VERSION}"

写入 changelog 文件

存入 docs/changelog/YYYY-MM-DD-v<版本号>.md

第五步:发版后

  • 通知用户:发版完成,输出版本号和 Release URL
  • 更新 package.json / pyproject.toml(如果项目需要版本号同步到配置文件)
  • 提醒:如果有需要手动操作的部署步骤,列出来

完整发版流程

用户:发个版 │ ├─ Step 1: 发版前检查(代码状态 + CI + 安全) ├─ Step 2: 生成版本号(CalVer) ├─ Step 3: 生成 Changelog(从 git log) ├─ Step 4: 创建 Release(GitHub 或本地文件) └─ Step 5: 发版后处理

适用场景

适合需要对 Git 仓库进行规范化发版、希望自动生成 CalVer 版本号与 changelog,并在 GitHub 上创建 Release(或仅生成本地 changelog 文件)的项目。

限制

发版前检查中若任何一项不通过,会提示用户处理后再继续,不强行发版。是否运行 security-audit 由用户确认。其他收费、价格、平台等具体信息暂未提供。