自動進行部署

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

您可以設定 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 時間,執行作業也會等待該時間。

      自動執行初期測試部署時,您可以使用這個等待時間,指定每個初期測試階段的持續時間。

    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 是自動化作業的執行個體。這是指向對應自動化資源的指標,以及產生該資源的推出作業相關資訊和其他中繼資料。

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

進一步瞭解自動化資源

自動化規則

自動化規則會定義可對推送管道自動執行的動作,以及自動化作業的執行方式詳情。

進一步瞭解自動規則

必要的身分與存取權管理角色和權限

除了執行任何 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

除了這些權限外,每項自動化規則可能還需要其他權限,才能執行自動化作業。如要瞭解各項自動化規則所需的特定權限,請參閱「設定自動化規則」。

詳情請參閱「IAM 角色和權限」,包括哪些 Cloud Deploy 角色包含這些權限

建立自動化作業

您可以建立自動化作業,包括使用任何可用的自動化規則,方法是設定自動化作業,然後使用 gcloud deploy apply 建立自動化資源

請參閱下一個部分 (設定自動化) 和「設定自動化規則」。

設定自動化動作

如要瞭解如何設定 Automation 資源,請參閱「設定檔結構定義」。

自動化規則設定

除了這項自動化設定,您還可指定自動化規則。每項可用規則的設定方式都不相同。

如要瞭解各項可用規則的說明,請參閱「使用自動化規則」。

暫停自動化動作

您可以暫停現有資源,不必刪除。這對於測試自動化功能非常實用,不會影響推送管道。暫停自動化作業後,系統不會執行該作業,但仍會產生平台記錄

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

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

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

後續步驟