release-management
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseRelease Management
发布管理
Automate releases with , semantic versioning, and changelog generation.
gh release借助、语义化版本控制和变更日志生成实现发布自动化。
gh releaseQuick Reference
快速参考
Create Release
创建发布
bash
undefinedbash
undefinedAuto-generate notes from PRs
Auto-generate notes from PRs
gh release create v1.2.0 --generate-notes
gh release create v1.2.0 --generate-notes
With custom title
With custom title
gh release create v1.2.0 --title "Version 1.2.0: Performance Update" --generate-notes
gh release create v1.2.0 --title "Version 1.2.0: Performance Update" --generate-notes
Draft release (review before publishing)
Draft release (review before publishing)
gh release create v1.2.0 --draft --generate-notes
gh release create v1.2.0 --draft --generate-notes
Pre-release (beta, rc)
Pre-release (beta, rc)
gh release create v1.2.0-beta.1 --prerelease --generate-notes
gh release create v1.2.0-beta.1 --prerelease --generate-notes
With custom notes
With custom notes
gh release create v1.2.0 --notes "## Highlights
- New auth system
- 50% faster search"
gh release create v1.2.0 --notes "## Highlights
- New auth system
- 50% faster search"
From notes file
From notes file
gh release create v1.2.0 --notes-file RELEASE_NOTES.md
undefinedgh release create v1.2.0 --notes-file RELEASE_NOTES.md
undefinedList & View Releases
列出与查看发布
bash
undefinedbash
undefinedList all releases
List all releases
gh release list
gh release list
View specific release
View specific release
gh release view v1.2.0
gh release view v1.2.0
View in browser
View in browser
gh release view v1.2.0 --web
gh release view v1.2.0 --web
JSON output
JSON output
gh release list --json tagName,publishedAt,isPrerelease
undefinedgh release list --json tagName,publishedAt,isPrerelease
undefinedVerify Releases (gh CLI 2.86.0+)
验证发布(gh CLI 2.86.0+)
bash
undefinedbash
undefinedVerify release attestation (sigstore)
Verify release attestation (sigstore)
gh release verify v1.2.0
gh release verify v1.2.0
Verify specific asset
Verify specific asset
gh release verify-asset v1.2.0 ./dist/app.zip
gh release verify-asset v1.2.0 ./dist/app.zip
Verify with custom trust policy
Verify with custom trust policy
gh release verify v1.2.0 --owner myorg
undefinedgh release verify v1.2.0 --owner myorg
undefinedManage Releases
管理发布
bash
undefinedbash
undefinedEdit release
Edit release
gh release edit v1.2.0 --title "New Title" --notes "Updated notes"
gh release edit v1.2.0 --title "New Title" --notes "Updated notes"
Delete release
Delete release
gh release delete v1.2.0
gh release delete v1.2.0
Upload assets
Upload assets
gh release upload v1.2.0 ./dist/app.zip ./dist/app.tar.gz
---gh release upload v1.2.0 ./dist/app.zip ./dist/app.tar.gz
---Semantic Versioning
语义化版本控制
text
MAJOR.MINOR.PATCH
│ │ │
│ │ └── Bug fixes (backwards compatible)
│ └──────── New features (backwards compatible)
└────────────── Breaking changes
Examples:
1.0.0 → 1.0.1 (patch: bug fix)
1.0.1 → 1.1.0 (minor: new feature)
1.1.0 → 2.0.0 (major: breaking change)
Pre-release:
2.0.0-alpha.1 (early testing)
2.0.0-beta.1 (feature complete)
2.0.0-rc.1 (release candidate)text
MAJOR.MINOR.PATCH
│ │ │
│ │ └── Bug fixes (backwards compatible)
│ └──────── New features (backwards compatible)
└────────────── Breaking changes
Examples:
1.0.0 → 1.0.1 (patch: bug fix)
1.0.1 → 1.1.0 (minor: new feature)
1.1.0 → 2.0.0 (major: breaking change)
Pre-release:
2.0.0-alpha.1 (early testing)
2.0.0-beta.1 (feature complete)
2.0.0-rc.1 (release candidate)Release Workflow
发布工作流
Standard Release
标准发布
bash
undefinedbash
undefined1. Ensure main is up to date
1. Ensure main is up to date
git checkout main
git pull origin main
git checkout main
git pull origin main
2. Determine version bump
2. Determine version bump
Check commits since last release
Check commits since last release
gh release view --json tagName -q .tagName # Current: v1.2.3
git log v1.2.3..HEAD --oneline
gh release view --json tagName -q .tagName # Current: v1.2.3
git log v1.2.3..HEAD --oneline
3. Create and push tag
3. Create and push tag
git tag -a v1.3.0 -m "Release v1.3.0"
git push origin v1.3.0
git tag -a v1.3.0 -m "Release v1.3.0"
git push origin v1.3.0
4. Create GitHub release
4. Create GitHub release
gh release create v1.3.0
--title "v1.3.0: Feature Name"
--generate-notes
--title "v1.3.0: Feature Name"
--generate-notes
gh release create v1.3.0
--title "v1.3.0: Feature Name"
--generate-notes
--title "v1.3.0: Feature Name"
--generate-notes
5. Close milestone if used
5. Close milestone if used
gh api -X PATCH repos/:owner/:repo/milestones/5 -f state=closed
undefinedgh api -X PATCH repos/:owner/:repo/milestones/5 -f state=closed
undefinedHotfix Release
热修复发布
bash
undefinedbash
undefined1. Branch from release tag
1. Branch from release tag
git checkout -b hotfix/v1.2.4 v1.2.3
git checkout -b hotfix/v1.2.4 v1.2.3
2. Fix and commit
2. Fix and commit
git commit -m "fix: Critical security patch"
git commit -m "fix: Critical security patch"
3. Tag and release
3. Tag and release
git tag -a v1.2.4 -m "Hotfix: Security patch"
git push origin v1.2.4
gh release create v1.2.4 --title "v1.2.4: Security Hotfix"
--notes "Critical security fix for authentication bypass"
--notes "Critical security fix for authentication bypass"
git tag -a v1.2.4 -m "Hotfix: Security patch"
git push origin v1.2.4
gh release create v1.2.4 --title "v1.2.4: Security Hotfix"
--notes "Critical security fix for authentication bypass"
--notes "Critical security fix for authentication bypass"
4. Merge fix to main
4. Merge fix to main
git checkout main
git cherry-pick <commit-sha>
git push origin main
---git checkout main
git cherry-pick <commit-sha>
git push origin main
---Changelog Generation
变更日志生成
Auto-Generated (from PRs)
自动生成(来自PR)
bash
undefinedbash
undefinedGitHub auto-generates from merged PRs
GitHub auto-generates from merged PRs
gh release create v1.2.0 --generate-notes
gh release create v1.2.0 --generate-notes
Output includes:
Output includes:
## What's Changed
## What's Changed
* feat: Add user auth by @dev in #123
* feat: Add user auth by @dev in #123
* fix: Login redirect by @dev in #124
* fix: Login redirect by @dev in #124
* docs: Update README by @dev in #125
* docs: Update README by @dev in #125
undefinedundefinedCustom Changelog Template
自定义变更日志模板
Create :
.github/release.ymlyaml
changelog:
categories:
- title: "Breaking Changes"
labels:
- "breaking"
- title: "New Features"
labels:
- "enhancement"
- "feature"
- title: "Bug Fixes"
labels:
- "bug"
- "fix"
- title: "Documentation"
labels:
- "documentation"
- title: "Other Changes"
labels:
- "*"创建文件:
.github/release.ymlyaml
changelog:
categories:
- title: "Breaking Changes"
labels:
- "breaking"
- title: "New Features"
labels:
- "enhancement"
- "feature"
- title: "Bug Fixes"
labels:
- "bug"
- "fix"
- title: "Documentation"
labels:
- "documentation"
- title: "Other Changes"
labels:
- "*"Manual CHANGELOG.md
手动维护CHANGELOG.md
markdown
undefinedmarkdown
undefinedChangelog
Changelog
[1.3.0] - 2026-01-15
[1.3.0] - 2026-01-15
Added
Added
- User authentication system (#123)
- Dark mode support (#125)
- User authentication system (#123)
- Dark mode support (#125)
Changed
Changed
- Improved search performance (#126)
- Improved search performance (#126)
Fixed
Fixed
- Login redirect loop (#124)
- Login redirect loop (#124)
Security
Security
- Updated dependencies for CVE-2026-1234
---- Updated dependencies for CVE-2026-1234
---Automation with GitHub Actions
借助GitHub Actions实现自动化
yaml
undefinedyaml
undefined.github/workflows/release.yml
.github/workflows/release.yml
name: Release
on:
push:
tags:
- 'v*'
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build
run: npm run build
- name: Create Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release create ${{ github.ref_name }} \
--generate-notes \
./dist/*.zip
---name: Release
on:
push:
tags:
- 'v*'
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build
run: npm run build
- name: Create Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release create ${{ github.ref_name }} \
--generate-notes \
./dist/*.zip
---Version Bumping Script
版本升级脚本
bash
#!/bin/bashbash
#!/bin/bashbump-version.sh
bump-version.sh
CURRENT=$(gh release view --json tagName -q .tagName | sed 's/v//')
IFS='.' read -r MAJOR MINOR PATCH <<< "$CURRENT"
case $1 in
major) NEW="$((MAJOR + 1)).0.0" ;;
minor) NEW="$MAJOR.$((MINOR + 1)).0" ;;
patch) NEW="$MAJOR.$MINOR.$((PATCH + 1))" ;;
*) echo "Usage: $0 [major|minor|patch]"; exit 1 ;;
esac
echo "Bumping $CURRENT -> $NEW"
git tag -a "v$NEW" -m "Release v$NEW"
git push origin "v$NEW"
gh release create "v$NEW" --generate-notes
Usage:
```bash
./bump-version.sh patch # 1.2.3 -> 1.2.4
./bump-version.sh minor # 1.2.4 -> 1.3.0
./bump-version.sh major # 1.3.0 -> 2.0.0CURRENT=$(gh release view --json tagName -q .tagName | sed 's/v//')
IFS='.' read -r MAJOR MINOR PATCH <<< "$CURRENT"
case $1 in
major) NEW="$((MAJOR + 1)).0.0" ;;
minor) NEW="$MAJOR.$((MINOR + 1)).0" ;;
patch) NEW="$MAJOR.$MINOR.$((PATCH + 1))" ;;
*) echo "Usage: $0 [major|minor|patch]"; exit 1 ;;
esac
echo "Bumping $CURRENT -> $NEW"
git tag -a "v$NEW" -m "Release v$NEW"
git push origin "v$NEW"
gh release create "v$NEW" --generate-notes
使用方法:
```bash
./bump-version.sh patch # 1.2.3 -> 1.2.4
./bump-version.sh minor # 1.2.4 -> 1.3.0
./bump-version.sh major # 1.3.0 -> 2.0.0Release Checklist
发布检查清单
markdown
undefinedmarkdown
undefinedRelease v1.3.0 Checklist
Release v1.3.0 Checklist
Pre-Release
Pre-Release
- All PRs merged to main
- CI/CD passing on main
- Version numbers updated in package.json/pyproject.toml
- CHANGELOG.md updated
- Documentation updated
- Milestone closed
- All PRs merged to main
- CI/CD passing on main
- Version numbers updated in package.json/pyproject.toml
- CHANGELOG.md updated
- Documentation updated
- Milestone closed
Release
Release
- Tag created and pushed
- GitHub release created
- Release notes reviewed
- Assets uploaded (if applicable)
- Tag created and pushed
- GitHub release created
- Release notes reviewed
- Assets uploaded (if applicable)
Post-Release
Post-Release
- Deployment verified
- Announcement posted (if applicable)
- Next milestone created
---- Deployment verified
- Announcement posted (if applicable)
- Next milestone created
---Best Practices
最佳实践
- Use semantic versioning - Communicate change impact
- Draft releases first - Review notes before publishing
- Generate notes from PRs - Accurate, automatic history
- Close milestone on release - Track completion
- Tag main only - Never tag feature branches
- Announce breaking changes - Prominent in release notes
- 使用语义化版本控制 - 传达变更影响
- 先创建草稿发布 - 发布前审核内容
- 从PR生成发布说明 - 准确、自动的历史记录
- 发布时关闭里程碑 - 跟踪完成情况
- 仅在main分支打标 - 切勿为功能分支打标
- 公告破坏性变更 - 在发布说明中突出显示
Related Skills
相关技能
- github-operations: Milestones, issues, and CLI reference
- git-workflow: Branching and recovery patterns
- github-operations: 里程碑、问题和CLI参考
- git-workflow: 分支与恢复模式
References
参考资料
- Semantic Versioning
- Release Automation
- Semantic Versioning
- Release Automation