自動進行部署

本文件將概略說明部署自動化功能。

您可以設定 Cloud Deploy,讓系統自動執行特定提交管道的發布相關工作和發布相關工作。這些工作包括發布升級階段推進

進一步瞭解 Cloud Deploy 中用於版本自動化作業的資源。

進一步瞭解如何設定規則,定義這些自動化動作的運作方式。

可自動執行的動作

在 Cloud Deploy 中,您可以自動執行下列發布和推出活動:

  • 自動升級版本

    您可以設定 Cloud Deploy,在成功推出至目標後自動推送版本。舉例來說,如果您有三個目標 (devstagingprod),可以設定自動化功能,讓系統在成功部署至 staging 後,無須人為介入即可將版本升級至 prod。您也可以指定延遲時間。

  • 依排程推送版本

    您可以設定 Cloud Deploy,讓系統根據 Cron 排程推送版本。

  • 進展至下一個推出階段

    您可以設定 Cloud Deploy,在成功推出至先前目標後,將推出作業從一個階段推進到下一個階段。您只能在使用初期測試部署策略的目標中使用階段推進功能。

  • 修復推出作業

    您可以設定 Cloud Deploy 自動重試失敗的推播作業。這包括重試推出作業指定次數,以及在重試次數失敗時自動回溯。

如要進一步瞭解這些動作以及如何設定,請參閱「自動化規則」。

自動化動作的運作方式為何?

每個自動化動作都會與所用推送管道綁定。您無法在多個提交管道中共用自動化功能。

以下是設定及執行自動化動作的一般程序:

  1. 設定自動化動作

    這項自動化動作與一個發布管道相關聯。

  2. 您可以使用 gcloud deploy apply 註冊自動化動作。

    這會建立自動化動作資源

  3. 您可以建立版本,喚出與此自動化程序相關聯的推送管道。

  4. 至少有一個目標的推行作業成功,或失敗。

    如果推出作業成功,且自動化動作為 promoteReleaseRule

    1. 執行作業會等待在來源目標中成功推出。來源目標是為自動化設定的 selector.targets,而不是 AutomationRule 中的目標。

    2. 如果已設定 wait 時間,執行作業也會等待該時間。

    3. 系統會自動將版本推送至管道程序中的下一個目標,或推送至指定目標 (如有指定)。

    如果推出作業成功,且自動化功能為 advanceRolloutRule,且目標使用初期測試部署策略:

    1. 執行作業會等待已識別的來源階段 (如果有)。

      sourcePhase 屬性為選用屬性,如果未指定來源階段,系統會自動推進推出作業中的每個階段。當來源階段為 IN_PROGRESS 時,系統會自動進行階段推進,但需視 wait 時間而定。

    2. 如果已設定 wait 時間,執行作業也會等待該時間。

      自動化 Canary 部署時,您可以使用這個等待時間指定每個 Canary 階段的時間長度。

    3. 推出作業會從該來源階段自動推進至推出作業中的下一個階段。

    4. 如果有額外的來源階段,系統會以相同方式處理,包括相同的等待時間 (如適用)。

    如果推播失敗,且有使用 repairRollout 規則的自動化動作:

    1. 在設定的 wait 時間過後,系統會重試推出作業 (如有)。

      如果在這個 repairRollout 規則中設定特定階段或工作,系統只會重試這些階段或工作。如果未指定工作或階段,系統會重試推行中的所有階段和工作。

      重試是選用功能,因此如果自動化動作未設定重試,就不會執行這個步驟。

    2. 如果第一次重試失敗,執行作業會等待已設定的 wait 時間,然後再重試。

    3. 重試會重複執行,直到 Cloud Deploy 用盡重試 attempts 為止。

      如果每次嘗試都失敗,且 attempts 用盡,則推播作業會失敗。

      在重試期間,推出作業的狀態IN_PROGRESS,直到最後一次重試嘗試後推出作業成功或失敗為止。重試期間的階段狀態為 IN_PROGRESS,但每次推出失敗後為 FAILED

    4. 如果所有重試都失敗 (或未設定任何重試),系統會建立新的推出作業,將目標版本回溯至最近一次成功推出的版本。

自動化資源

有兩種 Cloud Deploy 資源專門用於自動化:

  • 自動化

    Automation 是提交管道的子項資源,其中包含下列資訊:

    • 指向自動化動作所用目標的索引
    • 規則:用來控管自動化動作的內容和執行方式

    如要瞭解自動化資源的設定,請參閱「關於自動化資源」一文。

    當您針對包含自動化設定 (kind: Automation) 的檔案執行 gcloud deploy apply 時,Cloud Deploy 會建立自動化資源,將發布管道和目標或多個目標與一或多個自動化規則建立關聯。

  • 自動化執行作業

    AutomationRun 是自動化動作的例項。這是指向對應自動化資源的指標,以及產生該資源的推播資訊和其他中繼資料。

    自動化動作觸發時,系統就會建立自動化動作執行作業。

進一步瞭解自動化資源

自動化規則

自動化規則會定義可在推送管道中自動執行的動作,以及自動化執行方式的詳細資料。

進一步瞭解自動化規則

所需的 Identity and Access Management 角色和權限

除了執行任何 Cloud Deploy 發布管道所需的權限,以及執行要自動化的任務 (例如提前發布) 所需的權限之外,您還需要多項權限,才能在 AutomationAutomationRun 資源上執行特定作業:

  • 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 資源,請參閱設定檔架構

自動化規則設定

除了這項自動化設定外,您還需要指定自動化規則。每項可用規則的設定皆不同。

如要瞭解可用的每個規則,請參閱「使用自動化規則」。

暫停自動化動作

您可以暫停現有資源,但不必刪除。這對於在不影響發布管道的情況下測試自動化功能相當實用。當您暫停自動化動作時,系統不會執行自動化動作,但仍會產生平台記錄

  1. Automation 設定中,將 suspended 屬性更新為 true

  2. 針對該設定檔執行 gcloud deploy apply

  3. 即使自動化動作已暫停,系統仍會在自動化動作例項化時產生平台記錄。您可以使用這項功能測試及偵錯自動化動作,而不影響發布管道。

後續步驟