Cloud Build 可以將通知傳送至所選管道,讓您掌握建構狀態的最新消息。除了 Cloud Build 維護的通知程式 (例如 Slack 或 SMTP),您也可以使用 cloud-build-notifiers 存放區中提供的程式庫,建立自己的通知程式。
本頁說明如何建立自己的通知程式。
事前準備
-
Enable the Cloud Build, Cloud Run, Pub/Sub, and Secret Manager APIs.
安裝 Go 程式設計語言。
安裝 Google Cloud CLI。
設定
在電腦上開啟終端機視窗。
複製並瀏覽 cloud-build-notifiers 存放區:
git clone https://github.com/GoogleCloudPlatform/cloud-build-notifiers.git && cd cloud-build-notifiers
為自己的通知程式新增目錄並前往該目錄,其中 DIRECTORY_NAME 是目錄名稱:
mkdir DIRECTORY_NAME && cd DIRECTORY_NAME
在新目錄中初始化 Go 模組,其中 DIRECTORY_NAME 是新目錄的名稱:
go mod init github.com/GoogleCloudPlatform/cloud-build-notifiers/DIRECTORY_NAME
現在目錄中應該會顯示
go.mod
檔案。在
go.mod
檔案中新增下列程式碼,確保您使用的是最新版通知程式:replace github.com/GoogleCloudPlatform/cloud-build-notifiers/lib/notifiers => ../
依附元件已設定完成,現在可以建立自己的通知程式。
建立您的通知程式
cloud-build-notifiers
包含 lib/notifiers
目錄。在 lib/notifiers
目錄中,您會看到名為 notifier.go
的檔案。這個檔案包含可用來建立專屬通知程式的架構。
您需要在主要檔案中定義兩種方法,才能建立通知器。
在新目錄中,建立名為
main.go
的檔案。在
main.go
中,匯入通知程式庫架構和任何其他依附元件:為通知程式定義主要方法。在本範例中,
logger
是通知程式的名稱:main
方法會使用notifier.go
檔案中定義的Main
方法,用於設定通知程式二進位檔。為通知器定義結構體,您將在其中定義介面的變數。在本範例中,
logger
是通知程式的名稱:新增通知程式功能。通知程式介面是由兩種方法定義:
SetUp
:方法會接受設定、擷取密碼,並從設定中提取指定篩選器,然後將這些篩選器儲存為可用於傳送通知的通用運算式語言述詞。SetUp
如要進一步瞭解 CEL,請參閱cel-spec
存放區。SendNotification
:SendNotification
方法用於將通知傳送至所選頻道或服務。如需通知程式的定義,請參閱
notifier.go
和 Go 說明文件。在下列範例中,通知程式介面是使用
SetUp
和SendNotification
方法定義,用於列印建構記錄,其中logger
是通知程式的名稱:最終的
main.go
檔案應與下列檔案類似。在本範例中,logger
用做通知程式的名稱。
接著設定通知程式。
設定通知
編寫通知程式設定檔,設定通知程式並篩選建構事件:
在下列範例通知程式設定檔中,
filter
欄位會使用 CEL 和可用變數build
,篩選出狀態為SUCCESS
的建構事件:其中:
logging-sample
是通知者的名稱。
如需其他可做為篩選依據的欄位,請參閱「建構」資源。如需其他篩選範例,請參閱「使用 CEL 篩選建構事件」。
將通知程式設定檔上傳至 Cloud Storage bucket:
如果沒有 Cloud Storage bucket,請執行下列指令來建立 bucket,其中 BUCKET_NAME 是您要為 bucket 命名的名稱,須符合命名規定。
gcloud storage buckets create gs://BUCKET_NAME/
將通知程式設定檔上傳至值區:
gcloud storage cp CONFIG_FILE_NAME gs://BUCKET_NAME/CONFIG_FILE_NAME
其中:
BUCKET_NAME
是值區名稱。CONFIG_FILE_NAME
是設定檔的名稱。
建構及部署通知程式:
為
logging-sample
建立 Dockerfile:使用下列
cloudbuild.yaml
檔案建構及部署通知程式。其中:
_CONFIG_PATH
是通知程式設定的路徑,例如gs://BUCKET_NAME/CONFIG_FILE_NAME.yaml
。
如要執行
cloudbuild.yaml
,請傳入通知器路徑做為替代變數。gcloud builds submit . --substitutions=_CONFIG_PATH=gs://BUCKET_NAME/CONFIG_FILE_NAME
授予 Pub/Sub 權限,在專案中建立驗證權杖:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
其中:
PROJECT_ID
是 Google Cloud 專案 ID。PROJECT_NUMBER
是您的 Google Cloud 專案編號。
建立服務帳戶,代表您的 Pub/Sub 訂閱身分:
gcloud iam service-accounts create cloud-run-pubsub-invoker \ --display-name "Cloud Run Pub/Sub Invoker"
您可以使用
cloud-run-pubsub-invoker
,或將其改成不同於專案中其他服務帳戶的名稱。 Google Cloud將 Cloud Run
Invoker
權限授予cloud-run-pubsub-invoker
服務帳戶:gcloud run services add-iam-policy-binding SERVICE_NAME \ --member=serviceAccount:cloud-run-pubsub-invoker@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/run.invoker
其中:
SERVICE_NAME
是您要部署映像檔的 Cloud Run 服務名稱。PROJECT_ID
是 Google Cloud 專案 ID。
建立
cloud-builds
主題,接收通知程式的建構更新訊息:gcloud pubsub topics create cloud-builds
您也可以在建構設定檔中定義自訂主題名稱,這樣訊息就會改為傳送至自訂主題。在這種情況下,您會建立具有相同自訂主題名稱的主題:
gcloud pubsub topics create topic-name
詳情請參閱要接收建構作業通知的 Pub/Sub 主題。
為通知程式建立 Pub/Sub 推送訂閱者:
gcloud pubsub subscriptions create subscriber-id \ --topic=cloud-builds \ --push-endpoint=service-url \ --push-auth-service-account=cloud-run-pubsub-invoker@project-id.iam.gserviceaccount.com
其中:
subscriber-id
是您要為訂閱項目指定的名稱。service-url
是 Cloud Run 為新服務產生的網址。project-id
是 Google Cloud 專案 ID。
Cloud Build 專案的通知現已設定完成。下次叫用建構作業時,如果建構作業符合您設定的篩選條件,您會在管道中收到通知。
測試通知
如要測試本指南範例的通知,請執行 gcloud builds submit
指令來叫用建構作業。
在下列範例中,我們將 success.yaml
指定為設定路徑。執行這項指令後,應該會成功建構最精簡的應用程式。您也應該會看到建構記錄的輸出內容。
gcloud builds submit --no-source --config=success.yaml
其中 success.yaml
為:
steps:
- name: busybox
args: ["true"]
在下列範例中,我們將 failure.yaml
指定為設定路徑。執行這項指令後,建構作業應該會失敗。您不會看到建構記錄的輸出內容,而是會看到輸出內容,通知您來源中指定的 CEL 篩選器沒有相符項目。
gcloud builds submit --no-source --config=failure.yaml
其中 failure.yaml
為:
steps:
- name: busybox
args: ["false"]
如果您建立的通知程式設定為執行其他工作,而非將輸出內容記錄到 Cloud Run 服務記錄,也可以執行 gcloud builds submit
指令來測試通知。如要檢查與建構作業相關的錯誤,請查看服務的 Cloud Run 記錄。詳情請參閱「在 Cloud Run 中查看記錄」。
後續步驟
- 瞭解 Cloud Build 通知程式。
- 瞭解如何訂閱建構通知。