發布流程
本文件說明 Rin 專案的發布流程。
概述
Rin 使用語意化版本控制,並遵循結構化的發布工作流程以確保穩定性與一致性。
主要特性:
- 🤖 自動產生發布說明:從一般提交資訊產生
- 📝 詳盡的變更日誌:在
CHANGELOG.md中維護,內容包含遷移指南 - ✅ 自動驗證:CI 檢查版本一致性並執行測試
- 🚀 自動部署:在版本標籤上部署到 Cloudflare
版本格式
版本遵循 MAJOR.MINOR.PATCH 格式:
- MAJOR:不相容的 API 變更
- MINOR:新功能(向後相容)
- PATCH:缺陷修正(向後相容)
預發布版本可以使用連字號標記,例如 v1.0.0-beta.1。
本專案版本線
本專案使用標準語意化版本,獨立版本線從 v1.0.0 開始,發布標籤為 vX.Y.Z:
- MAJOR:不相容的變更,
X加 1,低位歸零 - MINOR:向後相容的新功能,
Y加 1,Z歸零 - PATCH:缺陷修正與小幅改動,
Z加 1 - 預發布:使用
-beta、-rc.1等後綴,例如v1.2.0-beta.1
每次發布都要更新 CHANGELOG.md 與 docs/docs/{zh,zh-TW,en,ja}/guide/changelog.md;發布公告頁依改動規模與說明需求維護:改動較大或需要重點說明時會新建或更新公告頁,同一版本線的多次發布可合併到同一頁,頁面在 _nav.json 的部落格導覽中登記。
同一條目同時涉及官方原版(上游)的版本與本專案版本時,本專案版本寫作 yjvX.Y.Z 以示區別。
提交資訊規範
我們遵循 Conventional Commits 規範。這讓我們能自動產生發布說明。
快速參考
更多細節,請參考提交規範。
發布工作流程
1. 確認所有變更都已就緒
- 所有功能/修正都已合併到
main - 所有提交都遵循一般提交格式
- 測試通過(
bun run check、bun run build)
2. 執行發布指令碼
指令碼將會:
- ✅ 執行發布前檢查(型別檢查、建置、版本一致性)
- 📝 更新 workspace 內所有
package.json檔案中的版本 - 🔗 為
CHANGELOG.md追加 release 連結 - 🏷️ 建立 git 提交與標籤
重要:指令碼不會替你撰寫 changelog 內文;它會要求 CHANGELOG.md 中已經存在與目標版本相符的章節。
3. 審閱與編輯 CHANGELOG
執行發布指令碼後:
4. 試執行(選用)
要在不套用變更的情況下預覽:
5. 推送發布
6. 自動發布流程
一旦標籤被推送,GitHub Actions 會自動:
-
🔍 驗證(
release.yml)- 驗證版本一致性
- 執行 typecheck 與 build
-
📝 發布說明產生(
release.yml)- 依類型分類提交(功能、修正等)
- 從 CHANGELOG.md 擷取詳細說明
- 建立格式化的 GitHub Release
- 將
build-v<version>-cloudflare.tar.gz附加為 release asset
-
🚀 部署(
deploy.yml)- 驗證部署版本
- 部署到 Cloudflare Workers
- 執行資料庫遷移
發布說明結構
GitHub Releases 會包含:
給 Fork 使用者
使用 release 產物進行手動部署
如果您不想重新在自己的倉庫中建置,可以直接使用 GitHub Release 附帶的建置產物:
- 開啟對應版本的 GitHub Release 頁面
- 在 Assets 中找到
build-v<version>-cloudflare.tar.gz - 複製該檔案的下載連結
- 手動觸發
deploy.yml,將這個連結作為artifact_url傳入
這個連結正是 deploy.yml 的 artifact_url 輸入設計要消費的內容。
選項 1:同步 Fork(建議)
- 前往您在 GitHub 上的 fork 倉庫
- 點擊 "Sync fork" 按鈕
- 查看 CHANGELOG.md 了解遷移步驟
- 如有需要,更新環境變數
- 若已設定,部署會自動執行
選項 2:手動更新
發布檢查清單
在建立發布之前:
- 所有測試通過(
bun run check、bun run build) - 所有提交都遵循一般格式
- CHANGELOG.md 已事先寫好對應版本的章節
- 包含遷移指南(用於破壞性變更)
- 文件已更新(如有需要)
推送標籤後:
- GitHub Release 成功建立
- 發布說明看起來正確
- 部署成功完成
緊急發布
對於需要立即發布的嚴重缺陷:
疑難排解
版本不符錯誤
問題:CI 顯示「版本不符」錯誤
解決方式:
- 確保 git 標籤與
package.json版本相符 - 發布指令碼會自動處理
- 對於手動發布,請確認:
git tag v1.0.0與 package.json 中的"version": "1.0.0"相符
空白發布說明
問題:GitHub Release 沒有列出變更
解決方式:
- 確保提交遵循一般格式(
feat:、fix:等) - 檢查標籤之間是否存在提交:
git log v1.1.0..v1.1.2 --oneline - 非一般格式的提交不會出現在分類列表中
部署失敗
問題:發布後部署失敗
解決方式:
- 查看 GitHub Actions 日誌以取得具體錯誤
- 驗證所有必要的 secrets 都已設定
- 檢查 Cloudflare 儀表板以取得部署錯誤
- 如有需要,從 Actions 分頁手動觸發部署
CHANGELOG.md 衝突
問題:CHANGELOG.md 中的合併衝突
解決方式:
- 保留兩個部分
- 依時間順序重新排列(最新的在前)
- 刪除重複項目
最佳實務
撰寫好的提交
✅ 好的:
❌ 不好的:
維護 CHANGELOG
- 在開發期間保持 [Unreleased] 部分更新
- 為破壞性變更撰寫遷移指南
- 在遷移部分包含程式碼範例
- 適當感謝貢獻者
版本升級
- Patch (1.1.3):僅缺陷修正
- Minor (1.2.0):新功能,向後相容
- Major (2.0.0):破壞性變更
不確定時,新功能使用 minor。
版本號:本專案使用標準語意化版本,版本線從
v1.0.0開始,發布標籤為vX.Y.Z,預發布版本使用-beta、-rc.1等後綴;同一條目同時涉及官方原版版本與本專案版本時,本專案版本寫作yjvX.Y.Z以示區別。
有問題?
- 📖 閱讀提交規範了解提交指南
- 🐛 回報問題:羊角快車二創版 Issues
- 📖 官方原版 Issues(上游):openRin/Rin Issues
- 💬 加入我們的社群討論(二創版優先)