您可以使用 Cloud Build 觸發條件,自動啟動建構作業,並從 Git 存放區部署工作流程。您可以設定觸發條件,在原始碼存放區發生任何變更時部署工作流程,或是只在變更符合特定條件時部署工作流程。
這個方法有助於管理部署生命週期。舉例來說,您可以在測試環境中部署工作流程的變更,針對該環境執行測試,然後逐步將這些變更推送至正式版環境。
事前準備
這些操作說明假設您在 Google Cloud 專案中具有 Cloud Build 編輯者角色 (roles/cloudbuild.builds.editor
),因此可以建立觸發條件。您也需要在 GitHub 或 Bitbucket 等原始碼存放區中建立工作流程。
主控台
啟用 Cloud Build 和 Workflows API。
將 工作流程管理員角色 (
roles/workflows.admin
) 授予 Cloud Build 服務帳戶:前往 Google Cloud 控制台的「IAM」頁面。
選取專案。
在 Cloud Build 服務帳戶 (
PROJECT_NUMBER@cloudbuild.gserviceaccount.com
) 列中,按一下 「Edit principal」(編輯主體)。按一下
「Add another role」。在「Role」清單中,選取「Workflows Admin」角色。
按一下 [儲存]。
將 Compute Engine 預設服務帳戶的 服務帳戶使用者角色 (
roles/iam.serviceAccountUser
) 授予 Cloud Build 服務帳戶。啟用 Compute Engine API 後,Compute Engine 的預設服務帳戶會是PROJECT_NUMBER-compute@developer.gserviceaccount.com
。前往 Google Cloud 控制台的「Service Accounts」(服務帳戶) 頁面。
選取專案。
按一下 Compute Engine 預設服務帳戶的電子郵件地址 (
PROJECT_NUMBER-compute@developer.gserviceaccount.com
)。按一下「Permissions」(權限) 分頁標籤。
按一下
「授予存取權」按鈕。如要新增主體,請輸入服務帳戶 (
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
) 的電子郵件地址。在「Select a role」清單中,依序選取「Service Accounts」>「Service Account User」角色。
按一下 [儲存]。
gcloud
啟用 Cloud Build 和 Workflows API。
gcloud services enable cloudbuild.googleapis.com \ workflows.googleapis.com
將 工作流程管理員角色 (
roles/workflows.admin
) 授予 Cloud Build 服務帳戶:PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format='value(projectNumber)') gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role=roles/workflows.admin
將
PROJECT_ID
替換為 Google Cloud專案的 ID。將 Compute Engine 預設服務帳戶的 服務帳戶使用者角色 (
roles/iam.serviceAccountUser
) 授予 Cloud Build 服務帳戶。啟用 Compute Engine API 後,Compute Engine 的預設服務帳戶會是PROJECT_NUMBER-compute@developer.gserviceaccount.com
。gcloud iam service-accounts add-iam-policy-binding \ $PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role=roles/iam.serviceAccountUser
連結至來源存放區
您必須將 Cloud Build 連結至來源存放區,讓 Cloud Build 能夠自動執行建構作業,因應存放區中發生的事件。
如要連結至 GitHub 或 Bitbucket,請完成下列步驟:
在 Google Cloud 控制台中,前往 Cloud Build「Triggers」頁面:
必要時,請選取專案並按一下「Open」。
在「Region」(區域) 清單中,選取要建立觸發事件的區域。
按一下 [Connect repository] (連結存放區)。
選取儲存原始碼的原始碼存放區。
例如:GitHub (Cloud Build GitHub 應用程式)
按一下「繼續」。
使用使用者名稱和密碼驗證來源存放區。
如果您要登入 GitHub,系統會要求您授權 Google Cloud Build GitHub 應用程式存取您的 GitHub 帳戶,以便繼續操作。
從可用存放區清單中選取所需存放區,然後按一下「OK」。
對於 GitHub 和 Bitbucket 等外部存放區,您必須具備您正在使用的 Google Cloud 專案擁有者層級權限。
閱讀免責事項,然後勾選旁邊的核取方塊,表示您同意這些條款。
按一下「連線」。
如要繼續建立自動建構觸發條件,以便自動建構存放區中的原始碼,請按一下「建立觸發條件」。否則請按一下「完成」。
建立 Cloud Build 設定檔
建構設定檔會定義使用建構觸發事件啟動建構作業時所需的欄位。在專案根目錄中建立設定檔,並使用 YAML 或 JSON 編寫。
舉例來說,下列設定檔會部署及執行測試工作流程,然後使用指令碼檢查輸出內容。如果測試通過,系統就會部署工作流程:
從 Git 存放區觸發建構作業時,Cloud Build 會填入 $BRANCH_NAME
和 $SHORT_SHA
替換變數。分別代表分支版本名稱,以及與建構相關聯的提交 ID 的前七個字元。
$_WORKFLOW_NAME
替代變數可讓您以不同的變數值重複使用設定檔。您可以在建立建構觸發事件時指定其值。
詳情請參閱「建立建構設定檔」。
建立版本觸發條件
您可以建立 Cloud Build 觸發條件,自動部署工作流程。
如要為上一節中的設定檔建立建構觸發條件,請按照下列步驟操作:
在 Google Cloud 控制台中,前往 Cloud Build 的「Triggers」(觸發條件) 頁面:
按一下「建立觸發條件」。
在「名稱」欄位中,輸入觸發事件的名稱。
針對「事件」,選取要叫用觸發條件的事件。
例如:推送至分支版本
在「Source」 部分,選取存放區,以及啟動觸發條件的分支或標記名稱。您可以使用規則運算式指定要比對的分支版本或標記。
例如:
GoogleCloudPlatform/workflows-demos
(存放區) 和^main$|^staging$
(符合main
和staging
分支)展開「顯示納入和忽略的檔案篩選器」部分,並將工作流程指定為納入檔案,這樣當工作流程發生變更時,系統就會叫用建構作業。
例如:
gitops/workflow.yaml
針對「Configuration」,請選取「Cloud Build 設定檔 (YAML 或 JSON)」做為類型,並選取「Repository」做為位置。
在「Cloud Build 設定檔位置」欄位中,指定檔案位置。
例如:
gitops/cloudbuild.yaml
如要新增替換變數,請按一下「新增變數」,然後指定鍵和值組合。
例如:
_WORKFLOW_NAME
(變數) 和workflows-gitops
(值)如要儲存建構觸發條件,請按一下「建立」。
當任何變更推送至 Git 存放區指定分支版本中的工作流程時,系統會自動觸發 Cloud Build 部署工作流程。
詳情請參閱「建立及管理自動建構觸發條件」。
測試建構觸發條件
您可以測試先前各節中的建構觸發事件和設定檔。
在 Git 存放區的
staging
分支中,編輯workflow.yaml
,並將Hello World
變更為Bye World
:將變更提交並推送至
staging
分支。git add workflow.yaml git commit -m "Update workflow.yaml in staging" git push
Cloud Build 觸發條件會執行並啟動建構作業。
如要確認建構作業是否成功,請在 Google Cloud 控制台中前往「Build history」(建構歷史記錄) 頁面:
建構完成後,Cloud Build 會提供建構作業和個別建構步驟的整體狀態。詳情請參閱「查看建構結果」。
如要確認已部署測試工作流程,請在 Google Cloud 控制台中前往「Workflows」頁面:
您應該會看到名為
workflows-gitops-staging
的工作流程。如要將測試工作流程部署至正式環境,請將
staging
分支合併至main
分支:git checkout main git merge staging git push
請注意,由於
test-main.sh
預期工作流程的輸出內容為Hello World
,因此建構作業會失敗:如要順利部署實際工作環境工作流程,請在
staging
分支中再次編輯workflow.yaml
,並將字串變更回Hello World
。將變更內容提交並推送至
staging
分支版本,然後將staging
分支版本合併至main
分支版本。如要確認已部署正式版工作流程,請在 Google Cloud 控制台中前往「Workflows」頁面:
您應該會看到名為
workflows-gitops-main
的工作流程。
後續步驟
- 進一步瞭解 Cloud Build。
- 瞭解如何排解建構錯誤。
- 瞭解如何排解工作流程問題。