server/priv/docs/zh_Hant/contributors/releases.md
Tuist 使用持續發佈系統,每當有意義的變更合併到主分支時,系統就會自動發佈新版本。此方法可確保所做的改進能快速傳達給使用者,而無需維護人員的手動介入。
我們持續發佈三個主要元件:
每個元件都有自己的發行管道,每次推送到主分支時都會自動執行。
我們使用 Conventional Commits 來結構我們的提交訊息。這可讓我們的工具了解變更的性質、決定版本的升級,並產生適當的變更記錄。
格式:種類(範圍):描述
| 類型 | 說明 | 版本影響 | 範例 |
|---|---|---|---|
功勋 | 新功能或能力 | 次要版本提升 (x.Y.z) | feat(cli): 新增 Swift 6 支援 |
定 | 錯誤修正 | 修補程式版本提升 (x.y.Z) | fix(app): 解決開啟專案時當機的問題 |
文件 | 文件變更 | 無發佈 | 說明文件:更新安裝指南 |
風格 | 程式碼樣式變更 | 無發佈 | 樣式:使用 swiftformat 格式化程式碼 |
重構 | 程式碼重整 | 無發佈 | 重構(server):簡化認證邏輯 |
敷衍 | 效能改善 | 補丁版本提升 | perf(cli): 最佳化依賴解析 |
測試 | 測試新增/變更 | 無發佈 | test: 新增快取的單元測試 |
苦差事 | 維護任務 | 無發佈 | 苦差事:更新相依性 |
ci | CI/CD 變更 | 無發佈 | CI:新增發行版本的工作流程 |
破壞性變更會觸發主要版本提升 (X.0.0),並應在提交正文中註明:
feat(cli): change default cache location
BREAKING CHANGE: The cache is now stored in ~/.tuist/cache instead of .tuist-cache.
Users will need to clear their old cache directory.
每個元件使用 git cliff 來:
偵測到可釋放變更時:
每個元件只有在有相關變更時才會釋放:
(cli) 或無範圍(app) 範圍的提交(伺服器) 範圍的提交由於提交訊息會直接影響發行說明,因此撰寫清楚、具說明性的訊息非常重要:
fix(cli):解決建立快取記憶體的問題 (#1234)如果是破壞性的變更,請在提交正文中包含BREAKING CHANGE: :
feat(cli): change cache directory structure
BREAKING CHANGE: Cache files are now stored in a new directory structure.
Users need to clear their cache after updating.
發佈工作流程定義在
.github/workflows/cli-release.yml - CLI 發行版本.github/workflows/app-release.yml - 應用程式版本.github/workflows/server-release.yml - 伺服器版本每個工作流程:
您可以透過以下方式監控釋出:
這種持續釋放的方式提供了
如果釋放失敗:
用於需要立即釋放的緊急修復:
CLI 和 Server 遵循上述的持續釋出程序,而iOS 應用程式 則因 Apple 的 App Store 審核程序而例外:
iOS 應用程式仍遵循相同的提交慣例,並使用 git cliff 來產生變更日誌,但實際發放給使用者的頻率較低,並採用手動排程。