本文件將概略說明部署自動化功能。
您可以設定 Cloud Deploy,讓系統自動執行特定提交管道的發布相關工作和發布相關工作。這些工作包括發布升級和階段推進。
進一步瞭解 Cloud Deploy 中用於版本自動化作業的資源。
進一步瞭解如何設定規則,定義這些自動化動作的運作方式。
可自動執行的動作
在 Cloud Deploy 中,您可以自動執行下列發布和推出活動:
-
您可以設定 Cloud Deploy,在成功推出至目標後自動推送版本。舉例來說,如果您有三個目標 (
dev
、staging
和prod
),可以設定自動化功能,讓系統在成功部署至staging
後,無須人為介入即可將版本升級至prod
。您也可以指定延遲時間。 -
您可以設定 Cloud Deploy,讓系統根據 Cron 排程推送版本。
-
您可以設定 Cloud Deploy,在成功推出至先前目標後,將推出作業從一個階段推進到下一個階段。您只能在使用初期測試部署策略的目標中使用階段推進功能。
-
您可以設定 Cloud Deploy 自動重試失敗的推播作業。這包括重試推出作業指定次數,以及在重試次數失敗時自動回溯。
如要進一步瞭解這些動作以及如何設定,請參閱「自動化規則」。
自動化動作的運作方式為何?
每個自動化動作都會與所用推送管道綁定。您無法在多個提交管道中共用自動化功能。
以下是設定及執行自動化動作的一般程序:
-
這項自動化動作與一個發布管道相關聯。
您可以使用
gcloud deploy apply
註冊自動化動作。這會建立自動化動作資源。
您可以建立版本,喚出與此自動化程序相關聯的推送管道。
至少有一個目標的推行作業成功,或失敗。
如果推出作業成功,且自動化動作為
promoteReleaseRule
:執行作業會等待在來源目標中成功推出。來源目標是為自動化設定的
selector.targets
,而不是AutomationRule
中的目標。如果已設定
wait
時間,執行作業也會等待該時間。系統會自動將版本推送至管道程序中的下一個目標,或推送至指定目標 (如有指定)。
如果推出作業成功,且自動化功能為
advanceRolloutRule
,且目標使用初期測試部署策略:執行作業會等待已識別的來源階段 (如果有)。
sourcePhase
屬性為選用屬性,如果未指定來源階段,系統會自動推進推出作業中的每個階段。當來源階段為IN_PROGRESS
時,系統會自動進行階段推進,但需視wait
時間而定。如果已設定
wait
時間,執行作業也會等待該時間。自動化 Canary 部署時,您可以使用這個等待時間指定每個 Canary 階段的時間長度。
推出作業會從該來源階段自動推進至推出作業中的下一個階段。
如果有額外的來源階段,系統會以相同方式處理,包括相同的等待時間 (如適用)。
如果推播失敗,且有使用
repairRollout
規則的自動化動作:在設定的
wait
時間過後,系統會重試推出作業 (如有)。如果在這個
repairRollout
規則中設定特定階段或工作,系統只會重試這些階段或工作。如果未指定工作或階段,系統會重試推行中的所有階段和工作。重試是選用功能,因此如果自動化動作未設定重試,就不會執行這個步驟。
如果第一次重試失敗,執行作業會等待已設定的
wait
時間,然後再重試。重試會重複執行,直到 Cloud Deploy 用盡重試
attempts
為止。如果每次嘗試都失敗,且
attempts
用盡,則推播作業會失敗。在重試期間,推出作業的狀態為
IN_PROGRESS
,直到最後一次重試嘗試後推出作業成功或失敗為止。重試期間的階段狀態為IN_PROGRESS
,但每次推出失敗後為FAILED
。如果所有重試都失敗 (或未設定任何重試),系統會建立新的推出作業,將目標版本回溯至最近一次成功推出的版本。
自動化資源
有兩種 Cloud Deploy 資源專門用於自動化:
自動化
Automation
是提交管道的子項資源,其中包含下列資訊:- 指向自動化動作所用目標的索引
- 規則:用來控管自動化動作的內容和執行方式
如要瞭解自動化資源的設定,請參閱「關於自動化資源」一文。
當您針對包含自動化設定 (
kind: Automation
) 的檔案執行gcloud deploy apply
時,Cloud Deploy 會建立自動化資源,將發布管道和目標或多個目標與一或多個自動化規則建立關聯。自動化執行作業
AutomationRun
是自動化動作的例項。這是指向對應自動化資源的指標,以及產生該資源的推播資訊和其他中繼資料。自動化動作觸發時,系統就會建立自動化動作執行作業。
自動化規則
自動化規則會定義可在推送管道中自動執行的動作,以及自動化執行方式的詳細資料。
所需的 Identity and Access Management 角色和權限
除了執行任何 Cloud Deploy 發布管道所需的權限,以及執行要自動化的任務 (例如提前發布) 所需的權限之外,您還需要多項權限,才能在 Automation
和 AutomationRun
資源上執行特定作業:
clouddeploy.automations.create
clouddeploy.automations.delete
clouddeploy.automations.get
clouddeploy.automations.list
clouddeploy.automations.update
clouddeploy.automationRuns.cancel
clouddeploy.automationRuns.get
clouddeploy.automationRuns.list
除了這些權限之外,每項自動化規則可能還需要進一步的權限才能執行自動化作業。如要瞭解每項自動化規則所需的特定權限,請參閱「設定自動化規則」。
如需進一步瞭解相關資訊 (包括哪些 Cloud Deploy 角色包含這些權限),請參閱「IAM 角色與權限」。
建立自動化作業
您可以設定自動化動作,包括使用任何可用的自動化規則,然後使用 gcloud deploy apply
建立自動化資源
請參閱下一個章節 (設定自動化) 和「設定自動化規則」。
設定自動化功能
如要進一步瞭解如何設定 Automation
資源,請參閱設定檔架構。
自動化規則設定
除了這項自動化設定外,您還需要指定自動化規則。每項可用規則的設定皆不同。
如要瞭解可用的每個規則,請參閱「使用自動化規則」。
暫停自動化動作
您可以暫停現有資源,但不必刪除。這對於在不影響發布管道的情況下測試自動化功能相當實用。當您暫停自動化動作時,系統不會執行自動化動作,但仍會產生平台記錄。
在
Automation
設定中,將suspended
屬性更新為true
。針對該設定檔執行
gcloud deploy apply
。即使自動化動作已暫停,系統仍會在自動化動作例項化時產生平台記錄。您可以使用這項功能測試及偵錯自動化動作,而不影響發布管道。
後續步驟
請嘗試快速入門:自動建立版本和推出進度。
進一步瞭解 Cloud Deploy 自動化規則。
進一步瞭解 Cloud Deploy 自動化資源。
如要進一步瞭解自動化設定檔,請參閱設定檔結構定義說明文件。