banner
yyh

Hi, I'm yyh

github
x
email

一次規範的 Tag Release 發布流程

一個我認可的 Tag Release 發布流程(帶 CHANGELOG)#

這篇文章只是個個人工程記錄,目的是把版本發布這件事流程化、固定化,避免每次發布都臨時發揮。

核心原則只有一句話:

發布相關的所有改動必須在一個 Release PR 中完成,
Tag 和 Release 只能發生在 PR 合併之後。


1. 創建 release 分支#

git checkout -b release/v0.1.0

每次發布都從獨立的 release 分支開始。


2. 先更新 CHANGELOG.md#

CHANGELOG.md 中新增一個版本區塊,整理本次發布的所有變更。

## [0.1.0] - YYYY-MM-DD

### Added
- ...

### Fixed
- ...

### Changed
- ...

CHANGELOG 是發布內容的唯一權威來源


3. 更新版本號#

修改 package.json 中的版本號(必要時同步 lockfile)。

{
  "version": "0.1.0"
}

此階段 不創建 tag


4. 一次性提交所有發布準備#

git add CHANGELOG.md package.json package-lock.json
git commit -m "chore(release): prepare v0.1.0"

版本號和 CHANGELOG 必須同時提交,不能拆開。


5. 創建 Release PR#

git push -u origin release/v0.1.0
gh pr create \
  --title "chore(release): v0.1.0" \
  --body "Release preparation for v0.1.0"

Release PR 中只包含發布相關內容:

  • CHANGELOG 更新
  • 版本號更新
  • CI 校驗結果

6. 合併 Release PR#

Review 完成後,將 Release PR 合併到 main

gh pr merge --merge

在此之前不允許打 tag。


7. 在 main 上創建 tag#

git checkout main
git pull origin main

git tag -a v0.1.0 -m "Release v0.1.0"
git push origin v0.1.0

Tag 指向的是已經被 review 和合併的最終狀態。


8. 從 CHANGELOG 生成 GitHub Release#

發布 GitHub Release 時,直接使用 CHANGELOG 對應版本的內容。

gh release create v0.1.0 \
  --title "v0.1.0" \
  --notes-file <(extract_changelog_section v0.1.0)

不手寫 Release Notes,避免與 CHANGELOG 不一致。


結語#

這個流程並不追求 “最快” 或 “最自動化”。

它的目標只有一個:
讓發布這件事變成一套可重複、可回溯、不容易出錯的固定動作。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。