release-management

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Release Management Skill

版本发布管理Skill

Automated releases via semantic-release with unified "v" prefix versioning.
通过semantic-release实现自动化版本发布,采用统一的"v"前缀版本号规则。

How It Works

工作流程

  1. Commits pushed to
    main
    trigger
    .github/workflows/release.yml
  2. Checks run first (test + lint matrix)
  3. semantic-release analyses commits since last tag
  4. Version bumped based on commit types (see
    conventional-commits
    skill)
  5. CHANGELOG.md
    updated automatically
  6. All
    package.json
    files updated across the monorepo (
    pnpm -r exec -- npm version
    )
  7. Git tag created with
    v
    prefix (e.g.,
    v4.46.0
    )
  8. GitHub Release created with auto-generated notes
  9. Release commit created:
    chore(release): v{version} [skip ci]
  10. Vercel auto-deploys the new version
  1. 提交代码到
    main
    分支时触发
    .github/workflows/release.yml
    工作流
  2. 首先执行检查环节(测试+代码扫描矩阵任务)
  3. semantic-release分析上次标签以来的所有提交
  4. 根据提交类型更新版本号(详见
    conventional-commits
    skill)
  5. 自动更新
    CHANGELOG.md
    文件
  6. 统一更新 monorepo 中所有
    package.json
    文件的版本号(使用
    pnpm -r exec -- npm version
    命令)
  7. 创建带"v"前缀的Git标签(例如:
    v4.46.0
  8. 创建包含自动生成说明的GitHub Release
  9. 生成发布提交:
    chore(release): v{version} [skip ci]
  10. Vercel自动部署新版本

Version Scheme

版本号规则

  • Format:
    v{major}.{minor}.{patch}
    (e.g.,
    v4.46.0
    )
  • Unified version across the entire monorepo
  • Tag format configured in
    .releaserc.json
    :
    "tagFormat": "v${version}"
  • 格式:
    v{major}.{minor}.{patch}
    (例如:
    v4.46.0
  • 整个monorepo采用统一版本号
  • 标签格式在
    .releaserc.json
    中配置:
    "tagFormat": "v${version}"

Configuration

配置说明

.releaserc.json
plugins:
  1. @semantic-release/commit-analyzer
    — conventionalcommits preset
  2. @semantic-release/release-notes-generator
    — conventionalcommits preset
  3. @semantic-release/changelog
    — writes
    CHANGELOG.md
  4. @semantic-release/exec
    — bumps all package.json versions
  5. @semantic-release/git
    — commits changelog + package.json changes
  6. @semantic-release/github
    — creates GitHub Release, adds "released" label
.releaserc.json
插件:
  1. @semantic-release/commit-analyzer
    — 使用conventionalcommits预设
  2. @semantic-release/release-notes-generator
    — 使用conventionalcommits预设
  3. @semantic-release/changelog
    — 写入
    CHANGELOG.md
    文件
  4. @semantic-release/exec
    — 更新所有package.json版本号
  5. @semantic-release/git
    — 提交变更日志及package.json的修改
  6. @semantic-release/github
    — 创建GitHub Release并添加"released"标签

Checking Release Status

查看发布状态

bash
undefined
bash
undefined

View recent releases

查看最近的发布记录

gh release list --limit 5
gh release list --limit 5

View specific release

查看特定版本的发布详情

gh release view v4.46.0
gh release view v4.46.0

Check release workflow status

检查发布工作流状态

gh run list --workflow=release.yml --limit 5
gh run list --workflow=release.yml --limit 5

View release workflow logs

查看发布工作流日志

gh run view <run-id> --log
undefined
gh run view <run-id> --log
undefined

Debugging Release Failures

排查发布失败问题

Release Not Triggered

发布未触发

  • Verify commit type is
    feat
    or
    fix
    (not
    chore
    ,
    docs
    , etc.)
  • Check workflow ran:
    gh run list --workflow=release.yml
  • Verify branch is
    main
  • 确认提交类型为
    feat
    fix
    (而非
    chore
    docs
    等类型)
  • 检查工作流是否执行:
    gh run list --workflow=release.yml
  • 确认分支为
    main

Version Not Bumped

版本号未更新

  • Check commit message format matches conventional commits
  • Look for
    [skip ci]
    in commit message (release commits include this)
  • 检查提交消息格式是否符合conventional commits规范
  • 查看提交消息中是否包含
    [skip ci]
    (发布提交会包含该标记)

Workflow Failed

工作流执行失败

  • Check GitHub Actions logs:
    gh run view <run-id> --log
  • Common causes: test failures, lint errors, npm publish issues
  • 查看GitHub Actions日志:
    gh run view <run-id> --log
  • 常见原因:测试失败、代码扫描错误、npm发布问题

Manual Release (Emergency Only)

手动发布(仅紧急情况使用)

bash
undefined
bash
undefined

Create tag manually

手动创建标签

git tag -a v4.47.0 -m "v4.47.0" git push origin v4.47.0
git tag -a v4.47.0 -m "v4.47.0" git push origin v4.47.0

Create GitHub release from tag

基于标签创建GitHub Release

gh release create v4.47.0 --generate-notes
undefined
gh release create v4.47.0 --generate-notes
undefined

Related

相关链接

  • See
    conventional-commits
    skill for commit message format
  • See
    changelog
    skill for changelog details
  • See
    deployment-rollback
    skill for rolling back releases
  • Workflow:
    .github/workflows/release.yml
  • Config:
    .releaserc.json
  • 提交消息格式详见
    conventional-commits
    skill
  • 变更日志详情详见
    changelog
    skill
  • 版本回滚详见
    deployment-rollback
    skill
  • 工作流文件:
    .github/workflows/release.yml
  • 配置文件:
    .releaserc.json