跳至內容

發布渠道

Tuist 伺服器同 Kura 快取伺服器透過三個 GHCR 映像渠道發布,各自提供唔同嘅穩定性保證。建議安裝 stable 渠道,每週更新一次:佢唔會每次有功能合併到 main 就推進,所以升級唔再意味住要吸收一批無關嘅變更。早期採用者仍然可以喺 canary 渠道運行每次提交嘅構建,而 release candidate 渠道則讓你喺即將成為穩定版之前先行試用該版本線。

伺服器同 Kura 都跟隨相同嘅每週發布節奏,並且同 Tuist CLI 嘅發布時間表 同步進行。

渠道#

渠道版本格式頻率會推進 :latest 嗎?
CanaryX.Y.0-canary.N(例如 1.351.0-canary.5)每次提交到 main否,需明確選擇
Release candidateX.Y.0-rc.N(例如 1.351.0-rc.1)每週一從 main 切出,試用約 1 週否,需明確選擇
StableX.Y.Z(例如 1.350.2、1.351.0)經過乾淨試用後,每週一推進是

Canary 同 release-candidate 構建會以 GitHub 預發布形式發布。任何喺解析 :latest 時排除預發布版本嘅工具都會跳過它們,因此你只有喺明確請求時才會使用其中一個。

Canary#

每次提交到 main 都會發布一個 canary 映像。Canary 始終代表 下一個未發布嘅次版本:一旦某個版本線被切出用於發布,main 就會推進到下一個次版本(例如,從 1.350.0-canary.42 到 1.351.0-canary.1)。Canary 係適合用於模擬生產環境嘅暫存環境嘅渠道,可讓你最早收到回歸問題嘅信號,或者喺修復到達穩定版之前驗證你報告嘅修復是否按預期運作。

plaintext
ghcr.io/tuist/tuist:1.351.0-canary.5
ghcr.io/tuist/kura:0.55.0-canary.5

Release candidate#

當一個次版本準備好發布時,其版本線會被凍結到受保護嘅 releases/server-<major>.<minor>.x(或 releases/kura-<major>.<minor>.x)分支,並以 X.Y.0-rc.1 形式發布。該版本線處於功能凍結狀態;只有關鍵修復同回歸問題會被揀選合併到其中,每個被接受嘅修復都會迭代 release candidate 版本(-rc.2、-rc.3 等)。經過乾淨嘅試用期後,該版本線會喺下一個星期一推進為穩定版。

plaintext
ghcr.io/tuist/tuist:1.351.0-rc.1
ghcr.io/tuist/kura:0.55.0-rc.1

Stable#

Stable 係建議使用嘅渠道,亦係所有文件指向嘅渠道。穩定版次版本(X.Y.0)只有喺 release candidate 經過乾淨試用後才會發布,並且當新功能合併到 main 時,它並不會推進。穩定版本線上嘅補丁版本(X.Y.1、X.Y.2 等)只包含回溯修復,絕不包含新功能。:latest 只有喺穩定版推進時才會移動。

plaintext
ghcr.io/tuist/tuist:1.351.0
ghcr.io/tuist/kura:0.55.0
ghcr.io/tuist/tuist:latest
ghcr.io/tuist/kura:latest

星期一發布列車#

每個星期一 UTC 時間 06:00,三個組件嘅發布列車會同步啟動:

  1. UTC 時間 06:00 — 推進任務運行。每個任務會推進最新嘅尚未成為穩定版嘅 release-candidate 版本線(通常係上個星期一切出嘅版本線),如果沒有則不執行任何操作。
  2. 每次推進完成後 — release-candidate 任務會從 main 切出下一個版本線,因此新切出嘅版本線唔會喺同一次運行中被推進。

如果推進失敗,切出版本線嘅操作會被擱置:系統只會揀選高於最新穩定版嘅最高 release-candidate 版本線,因此如果喺失敗基礎上切出下一個版本線,會導致未能發布嘅版本線被孤立。下一個星期一会自動重試被擱置嘅版本線。

鎖定渠道#

喺你嘅部署清單、Helm 值或 Docker Compose 文件中鎖定你想要嘅特定標籤。例如,使用 Helm chart:

yaml
server:
image:
repository: ghcr.io/tuist/tuist
tag: "1.350.2" # Pinned to a stable patch
# tag: "1.351.0-rc.1" # Or opt into a release candidate to soak it
# tag: "1.351.0-canary.5" # Or opt into a specific canary build
kuraRuntime:
image:
repository: ghcr.io/tuist/kura
tag: "0.54.0" # Same three channels apply to Kura

:latest 喺 ghcr.io/tuist/tuist 同 ghcr.io/tuist/kura 上都追蹤最新嘅穩定版,僅喺星期一推進時移動。鎖定 :latest 可讓你獲得每週穩定版嘅節奏而無需更新標籤;鎖定特定版本則可讓你完全控制升級時機。

建議策略#

設立呢啲渠道係為了讓你可以將「獲取最新修復」同「獲取最新功能」分開。一個安全且低工作量嘅默認策略係:

  1. 將生產環境鎖定到一個穩定嘅次版本線,例如 ghcr.io/tuist/tuist:1.351。該版本線只接收回溯修復,絕不包含新功能,因此日常升級保持低風險。當你準備採用下一個次版本時,再更新鎖定版本。
  2. 喺 canary 或特定 release-candidate 標籤上運行暫存環境。 暫存環境可以捕捉否則會影響用戶嘅回歸問題,而且暫存環境越接近 main,你就越早發現它們。喺當前 release-candidate 版本線上運行暫存環境係一個良好嘅折中方案:它會試用即將喺下一個星期一成為穩定版嘅確切內容。
  3. 查看 伺服器變更日誌 以了解實際發布嘅內容。 每次穩定版推進都會喺那裡公告,並列出已合併嘅拉取請求。

如果你希望新功能喺成為穩定版後自動推出到生產環境,可以將生產環境保持喺 :latest。請注意標籤會喺每個星期一早上推進,因此請相應安排你嘅部署時間窗口。

回溯修復#

任何時候都有兩條穩定嘅伺服器(同 Kura)版本線處於積極維護狀態:當前版本線會以回溯拉取請求嘅形式接收回歸問題修復同安全修復,而上一個版本線只接收關鍵同安全修復。較舊嘅版本線唔會進行回溯修復;請升級到受維護嘅版本線以接收修復。當一條新版本線被推進為穩定版時,原本嘅當前版本線會變成「上一個」,而原本嘅「上一個」版本線則停止接收回溯修復。

回溯修復會按需切出為 X.Y.(Z+1) 補丁版本。它們永遠唔會移動 :latest。