您可以設定 Cloud Build,使用 Cloud Build 通知工具將建構通知傳送至 Slack、Google Chat、SMTP 伺服器、HTTP 端點或 BigQuery 執行個體。本頁面說明如何自動設定所需的通知工具。
自動設定通知
Cloud Build 提供設定指令碼,可用於自動設定通知。如要使用設定指令碼設定通知,請按照下列步驟操作:
Slack
設定
以下各節說明自動設定通知工具的通知前,必須完成的步驟。
正在啟用 API
啟用 Cloud Build、Compute Engine、Cloud Run、Pub/Sub 和 Secret Manager API (如果尚未啟用)。
啟用 API 所需的角色
您必須具備 serviceusage.services.enable 權限,才能啟用 API。如果您建立了專案,可能已透過擁有者角色 (roles/owner) 取得這項權限。否則,您可以透過 Service Usage 管理員角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。
取得及儲存憑證
為要傳送通知的 Slack 工作區建立 Slack 應用程式。
啟用傳入 Webhook,將訊息從 Cloud Build 發布至 Slack。
前往 Slack 應用程式,找出傳入 Webhook 的網址。網址應類似下方所示:
http://hooks.slack.com/services/...將連入 Webhook 網址儲存在 Secret Manager:
在 Google Cloud 控制台開啟「Secret Manager」頁面:
點選「建立密鑰」。
輸入密鑰名稱。
在「Secret value」(密鑰值) 下方,新增 Slack 應用程式的連入 Webhook 網址。
如要儲存密鑰,請按一下「Create secret」(建立密鑰)。
編寫通知工具設定檔
編寫通知器設定檔,設定 Slack 通知器並篩選建構事件:
在下列通知工具設定檔範例中,filter 欄位使用一般運算語言和可用變數 build,篩選狀態為 SUCCESS 的建構事件:
apiVersion: cloud-build-notifiers/v1
kind: SlackNotifier
metadata:
name: example-slack-notifier
spec:
notification:
filter: build.status == Build.Status.SUCCESS
delivery:
webhookUrl:
secretRef: webhook-url
template:
type: golang
uri: gs://bucket-name/slack.json
secrets:
- name: webhook-url
value: projects/project-id/secrets/secret-name/versions/latest
其中:
webhook-url是本範例中使用的設定變數,用於參照儲存在 Secret Manager 中的 Slack Webhook 網址路徑。您在此指定的變數名稱應與secrets下方的name欄位相符。bucket-name是 Cloud Storage bucket 的名稱,設定指令碼會將範本檔案上傳到這個 bucket。如果 bucket 不存在,設定指令碼會在專案中建立 bucket,並在上傳檔案前驗證 bucket 擁有權。project-id是 Google Cloud 專案的 ID。secret-name是含有 Slack Webhook 網址的密鑰名稱。uri欄位會參照slack.json檔案。這個檔案包含託管於 Cloud Storage 的 JSON 範本,代表傳送至 Slack 空間的通知訊息。
如要查看範例,請參閱 Slack 通知工具的通知工具設定檔。
執行自動化指令碼
如要自動設定通知工具的通知,請按照下列步驟操作:
使用專案 ID 和區域設定 Google Cloud CLI:
gcloud config set project project-id gcloud config set run/region region其中:
project-id是您的 Google Cloud 專案 ID。region是要部署通知工具的區域。
在存放區根目錄中執行下列指令:
./setup.sh slack config-path -b bucket-name -t template-path -s secret-name
其中:
config-path是通知工具設定檔的路徑。bucket-name是 Cloud Storage bucket 的名稱,設定指令碼會將設定和範本檔案上傳到這個 bucket。如果省略-b,指令碼會產生含有隨機後置字串 (notifiers-config-random-suffix) 的 bucket 名稱。template-path是通知器範本檔案的路徑。通知器範本檔案包含託管於 Cloud Storage 的 JSON 範本,代表通知訊息。您可以使用這個變數,或在通知工具設定檔的uri欄位中,將通知工具範本檔案納入為路徑。secret-name是儲存在 Secret Manager 中的密鑰名稱。
執行指令碼後,您會看到下列訊息:
** NOTIFIER SETUP COMPLETE **
通知器現已設定完成。您可以在 cloud-build-notifiers 存放區中查看完整指令碼,或執行 ./setup.sh --help,瞭解指令碼的使用說明。
SMTP
設定
以下各節說明自動設定通知工具的通知前,必須完成的步驟。
正在啟用 API
啟用 Cloud Build、Compute Engine、Cloud Run、Pub/Sub 和 Secret Manager API (如果尚未啟用)。
啟用 API 所需的角色
您必須具備 serviceusage.services.enable 權限,才能啟用 API。如果您建立了專案,可能已透過擁有者角色 (roles/owner) 取得這項權限。否則,您可以透過 Service Usage 管理員角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。
儲存憑證
將寄件者的電子郵件帳戶密碼儲存在 Secret Manager 中:
在 Google Cloud 控制台開啟「Secret Manager」頁面:
點選「建立密鑰」。
輸入密鑰名稱。
在「密鑰值」下方,新增寄件者的電子郵件帳戶密碼。
如要儲存密鑰,請按一下「Create secret」(建立密鑰)。
編寫通知工具設定檔
編寫通知器設定檔,設定 SMTP 通知器並篩選建構事件:
在下列通知工具設定檔範例中,filter 欄位使用一般運算語言和可用變數 build,篩選狀態為 SUCCESS 的建構事件:
apiVersion: cloud-build-notifiers/v1
kind: SMTPNotifier
metadata:
name: example-smtp-notifier
spec:
notification:
filter: build.status == Build.Status.SUCCESS
delivery:
server: server-host-name
port: "port"
sender: sender-email
from: from-email
recipients:
- recipient-email
# optional: more emails here
password:
secretRef: smtp-password
template:
type: golang
uri: gs://bucket-name/smtp.html
secrets:
- name: smtp-password
value: projects/project-id/secrets/secret-name/versions/latest
其中:
server-host-name是 SMTP 伺服器的位址。port是處理 SMTP 要求的通訊埠。這個值應指定為字串。sender-email是指定 server-host-name 看到的寄件者帳戶電子郵件地址。from-email是收件者看到的電子郵件地址。recipient-email是包含一或多個電子郵件地址的清單,用於接收寄件者的郵件。smtp-password是本範例中使用的設定變數,用於參照儲存在 Secret Manager 中的寄件者電子郵件帳戶密碼。您在此指定的變數名稱應與secrets下方的name欄位相符。project-id是 Google Cloud 專案的 ID。secret-name是密鑰名稱,其中包含寄件者電子郵件帳戶的密碼。bucket-name是 Cloud Storage bucket 的名稱,設定指令碼會將範本檔案上傳到這個 bucket。如果 bucket 不存在,設定指令碼會在專案中建立 bucket,並在上傳檔案前驗證 bucket 擁有權。uri欄位會參照smtp.html檔案。這個檔案參照託管於 Cloud Storage 的 HTML 範本,代表通知電子郵件。
如要查看範例,請參閱 SMTP 通知工具的通知工具設定檔。
執行自動化指令碼
如要自動設定通知工具的通知,請按照下列步驟操作:
使用專案 ID 和區域設定 Google Cloud CLI:
gcloud config set project project-id gcloud config set run/region region其中:
project-id是您的 Google Cloud 專案 ID。region是要部署通知工具的區域。
在存放區根目錄中執行下列指令:
./setup.sh smtp config-path -b bucket-name -t template-path -s secret-name
其中:
config-path是通知工具設定檔的路徑。bucket-name是 Cloud Storage bucket 的名稱,設定指令碼會將設定和範本檔案上傳到這個 bucket。如果省略-b,指令碼會產生含有隨機後置字串 (notifiers-config-random-suffix) 的 bucket 名稱。template-path是通知器範本檔案的路徑。通知器範本檔案包含託管於 Cloud Storage 的 JSON 範本,代表通知訊息。您可以使用這個變數,或在通知工具設定檔的uri欄位中,將通知工具範本檔案納入為路徑。secret-name是儲存在 Secret Manager 中的密鑰名稱。
執行指令碼後,您會看到下列訊息:
** NOTIFIER SETUP COMPLETE **
通知器現已設定完成。您可以在 cloud-build-notifiers 存放區中查看完整指令碼,或執行 ./setup.sh --help,瞭解指令碼的使用說明。
BigQuery
設定
以下各節說明自動設定通知工具的通知前,必須完成的步驟。
正在啟用 API
啟用 Cloud Build、Cloud Run、Pub/Sub 和 BigQuery API (如有尚未啟用的 API)。
啟用 API 所需的角色
您必須具備 serviceusage.services.enable 權限,才能啟用 API。如果您建立了專案,可能已透過擁有者角色 (roles/owner) 取得這項權限。否則,您可以透過 Service Usage 管理員角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。
授予權限
授予 Cloud Run 服務帳戶建立及寫入 BigQuery 資料表的權限,以及擷取與建構作業相關 Artifact Registry 資料的權限:
前往 Google Cloud 控制台的「IAM」(身分與存取權管理) 頁面:
找出與專案相關聯的 Compute Engine 預設服務帳戶:
您的 Compute Engine 預設服務帳戶應與下列內容類似,其中 project-number 是您的專案編號:
project-number-compute@developer.gserviceaccount.com在包含 Compute Engine 預設服務帳戶的資料列中,按一下鉛筆圖示。
您會看到「編輯權限」分頁。
按一下 [Add another role] (新增其他角色)。
新增下列角色:
- Artifact Registry 讀取者
BigQuery 資料編輯者
Artifact Registry 讀取者角色可讓您擷取映像檔資料。BigQuery 資料編輯者可讀取及寫入資料。
按一下「儲存」。
編寫通知工具設定檔
編寫通知器設定檔,設定 BigQuery 通知器並篩選建構事件:
在下列通知器設定檔範例中,filter 欄位使用一般運算語言和變數 build,篩選具有指定觸發條件 ID 的建構事件:
apiVersion: cloud-build-notifiers/v1
kind: BigQueryNotifier
metadata:
name: example-bigquery-notifier
spec:
notification:
filter: build.build_trigger_id == "123e4567-e89b-12d3-a456-426614174000"
delivery:
table: projects/project-id/datasets/dataset-name/tables/table-name
template:
type: golang
uri: gs://bucket-name/bq.json
其中:
project-id是 Google Cloud 專案的 ID。dataset-name是您要為資料集指定的名稱。table-name是您要為資料表指定的名稱。bucket-name是 Cloud Storage bucket 的名稱,設定指令碼會將範本檔案上傳到這個 bucket。如果 bucket 不存在,設定指令碼會在專案中建立 bucket,並在驗證 bucket 擁有權後上傳檔案。uri欄位會參照bq.json檔案。這個檔案參照託管於 Cloud Storage 的 JSON 範本,代表要插入 BigQuery 資料表的資訊。
通知器設定檔中的 table-name 可以參照:
- 不存在的資料表
- 沒有結構定義的空白資料表
現有資料表的結構定義符合 BigQuery 通知工具中的結構定義規格
如要查看範例,請參閱 BigQuery 通知工具的通知工具設定檔。
執行自動化指令碼
如要自動設定通知工具的通知,請按照下列步驟操作:
使用專案 ID 和區域設定 Google Cloud CLI:
gcloud config set project project-id gcloud config set run/region region其中:
project-id是您的 Google Cloud 專案 ID。region是要部署通知工具的區域。
在存放區根目錄中執行下列指令:
./setup.sh bigquery config-path -b bucket-name -t template-path其中:
config-path是通知工具設定檔的路徑。bucket-name是 Cloud Storage bucket 的名稱,設定指令碼會將設定和範本檔案上傳到這個 bucket。如果省略-b,指令碼會產生含有隨機後置字串 (notifiers-config-random-suffix) 的 bucket 名稱。template-path是通知器範本檔案的路徑。通知器範本檔案包含託管於 Cloud Storage 的 JSON 範本,代表通知訊息。您可以使用這個變數,或在通知工具設定檔的uri欄位中,將通知工具範本檔案納入為路徑。
執行指令碼後,您會看到下列訊息:
** NOTIFIER SETUP COMPLETE **通知器現已設定完成。您可以在 cloud-build-notifiers 存放區中查看完整指令碼,或執行
./setup.sh --help取得指令碼的使用說明。
HTTP
設定
以下各節說明自動設定通知工具的通知前,必須完成的步驟。
正在啟用 API
啟用 Cloud Build、Cloud Run 和 Pub/Sub API (如果尚未啟用)。
啟用 API 所需的角色
您必須具備 serviceusage.services.enable 權限,才能啟用 API。如果您建立了專案,可能已透過擁有者角色 (roles/owner) 取得這項權限。否則,您可以透過 Service Usage 管理員角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。
編寫通知工具設定檔
編寫通知工具設定檔,設定 HTTP 通知工具並篩選建構事件:
在下列通知工具設定檔範例中,filter 欄位使用一般運算語言和可用變數 build,篩選狀態為 SUCCESS 的建構事件:
apiVersion: cloud-build-notifiers/v1
kind: HTTPNotifier
metadata:
name: example-http-notifier
spec:
notification:
filter: build.status == Build.Status.SUCCESS
delivery:
# The `http(s)://` protocol prefix is required.
url: url
template:
type: golang
uri: gs://bucket-name/http.json
其中:
url是本範例中使用的設定變數,用於指定要求的網址。- url 是您要指定為接收端伺服器的網址。
bucket-name是 Cloud Storage bucket 的名稱,設定指令碼會將範本檔案上傳到這個 bucket。如果 bucket 不存在,設定指令碼會在專案中建立 bucket,並在驗證 bucket 擁有權後上傳檔案。uri欄位會參照http.json檔案。這個檔案參照託管於 Cloud Storage 的 JSON 範本,代表傳送至 Webhook 端點的 JSON 酬載。
如要查看範例,請參閱 HTTP 通知器的通知器設定檔。
執行自動化指令碼
如要自動設定通知工具的通知,請按照下列步驟操作:
使用專案 ID 和區域設定 Google Cloud CLI:
gcloud config set project project-id gcloud config set run/region region其中:
project-id是您的 Google Cloud 專案 ID。region是要部署通知工具的區域。
在存放區根目錄中執行下列指令:
./setup.sh http config-path -b bucket-name其中:
config-path是通知工具設定檔的路徑。bucket-name是 Cloud Storage bucket 的名稱,設定指令碼會將設定檔上傳到這個 bucket。如果省略-b,指令碼會產生含有隨機後置字串 (notifiers-config-random-suffix) 的 bucket 名稱。
執行指令碼後,您會看到下列訊息:
** NOTIFIER SETUP COMPLETE **
通知器現已設定完成。您可以在 cloud-build-notifiers 存放區中查看完整指令碼,或執行 ./setup.sh --help 取得指令碼的使用說明。
Google Chat
設定
以下各節說明自動設定通知工具的通知前,必須完成的步驟。
正在啟用 API
啟用 Cloud Build、Compute Engine、Cloud Run、Pub/Sub 和 Secret Manager API (如果尚未啟用)。
啟用 API 所需的角色
您必須具備 serviceusage.services.enable 權限,才能啟用 API。如果您建立了專案,可能已透過擁有者角色 (roles/owner) 取得這項權限。否則,您可以透過 Service Usage 管理員角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。
取得及儲存憑證
在 Google Chat 中建立聊天室。
在建立的聊天室中,建立傳入 Webhook,將訊息從 Cloud Build 發布到 Google Chat。網址應類似於以下示例:
https://chat.googleapis.com/v1/spaces/...
將連入 Webhook 網址儲存在 Secret Manager:
在 Google Cloud 控制台開啟「Secret Manager」頁面:
點選「建立密鑰」。
輸入密鑰名稱。
在「Secret value」(密鑰值) 下方,新增 Google Chat 聊天室的傳入 Webhook 網址。
如要儲存密鑰,請按一下「Create secret」(建立密鑰)。
編寫通知工具設定檔
編寫通知工具設定檔,設定 Google Chat 通知工具,並篩選建構事件:
在下列通知工具設定檔範例中,filter 欄位使用一般運算語言和可用變數 build,篩選狀態為 SUCCESS 的建構事件:
apiVersion: cloud-build-notifiers/v1
kind: GoogleChatNotifier
metadata:
name: example-googlechat-notifier
spec:
notification:
filter: build.status == Build.Status.SUCCESS
delivery:
webhookUrl:
secretRef: webhook-url
secrets:
- name: webhook-url
value: projects/project-id/secrets/secret-name/versions/latest
其中:
webhook-url是本範例中使用的設定變數,用於參照儲存在 Secret Manager 中的 Google Chat Webhook 網址路徑。您在此指定的變數名稱應與secrets下方的name欄位相符。project-id是 Google Cloud 專案的 ID。secret-name是含有 Google Chat Webhook 網址的密鑰名稱。
如要查看範例,請參閱 Google Chat 通知工具的通知工具設定檔。
執行自動化指令碼
如要自動設定通知工具的通知,請按照下列步驟操作:
使用專案 ID 和區域設定 Google Cloud CLI:
gcloud config set project project-id gcloud config set run/region region其中:
project-id是您的 Google Cloud 專案 ID。region是要部署通知工具的區域。
在存放區根目錄中執行下列指令:
./setup.sh googlechat config-path -b bucket-name -s secret-name
其中:
config-path是通知工具設定檔的路徑。bucket-name是 Cloud Storage bucket 的名稱,設定指令碼會將設定檔上傳到這個 bucket。如果省略-b,指令碼會產生含有隨機後置字串 (notifiers-config-random-suffix) 的 bucket 名稱。secret-name是儲存在 Secret Manager 中的密鑰名稱。
執行指令碼後,您會看到下列訊息:
** NOTIFIER SETUP COMPLETE **
通知器現已設定完成。您可以在 cloud-build-notifiers 存放區中查看完整指令碼,或執行 ./setup.sh --help,瞭解指令碼的使用說明。
GitHub Issues
設定
以下各節說明自動設定通知工具的通知前,必須完成的步驟。
正在啟用 API
啟用 Cloud Build、Compute Engine、Cloud Run、Pub/Sub 和 Secret Manager API (如果尚未啟用)。
啟用 API 所需的角色
您必須具備 serviceusage.services.enable 權限,才能啟用 API。如果您建立了專案,可能已透過擁有者角色 (roles/owner) 取得這項權限。否則,您可以透過 Service Usage 管理員角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。
取得及儲存憑證
建立 GitHub 個人存取權杖:
- 前往 GitHub 設定建立新權杖。
選取
repo範圍。按一下「Generate token」
將權杖儲存在 Secret Manager:
在 Google Cloud 控制台開啟「Secret Manager」頁面:
點選「建立密鑰」。
輸入密鑰名稱。
在「密鑰值」下方,新增 GitHub 權杖。
如要儲存密鑰,請按一下「Create secret」(建立密鑰)。
撰寫範本設定檔
編寫範本設定檔,說明建立的 GitHub 問題應採用的格式:
在下列範本設定檔範例中,title 和 body 欄位使用建構作業中的替代變數:
{
"title": "Build {{.Build.BuildTriggerId}}: {{.Build.Status}}",
"body": "[{{.Build.ProjectId}}] {{.Build.BuildTriggerId}} status: **{{.Build.Status}}**\n\n[View Logs]({{.Build.LogUrl}})"
}
如要查看範例,請參閱 GitHub Issues 通知工具的範本設定檔。
您可以使用用於建立問題的 GitHub API 端點中可用的主體參數,設定其他欄位。
編寫通知工具設定檔
編寫通知工具設定檔,設定 Google Chat 通知工具,並篩選建構事件:
在下列通知工具設定檔範例中,filter 欄位使用一般運算語言和可用變數 build,篩選狀態為 SUCCESS 的建構事件:
apiVersion: cloud-build-notifiers/v1
kind: GitHubIssuesNotifier
metadata:
name: example-githubissues-notifier
spec:
notification:
filter: build.status == Build.Status.FAILURE
template:
type: golang
uri: gs://bucket-name/template-file-name
delivery:
githubToken:
secretRef: github-token
githubRepo: myuser/myrepo
secrets:
- name: github-token
value: projects/project-id/secrets/secret-name/versions/latest
其中:
githubToken是本範例中使用的設定變數,用於參照儲存在 Secret Manager 中的 GitHub 權杖。您在此指定的變數名稱應與secrets下方的name欄位相符。bucket-name是 Cloud Storage bucket 的名稱,設定指令碼會將範本檔案上傳到這個 bucket。如果 bucket 不存在,設定指令碼會在專案中建立 bucket,並在驗證 bucket 擁有權後上傳檔案。template-file-name是範本檔案的名稱。myuser/myrepo是要建立問題的存放區名稱。project-id是 Google Cloud 專案的 ID。secret-name是含有 GitHub 權杖的密鑰名稱。
如要查看範例,請參閱 Google Chat 通知工具的通知工具設定檔。
如要瞭解其他可篩選的欄位,請參閱建構資源。如需其他篩選範例,請參閱「使用 CEL 篩選建構事件」。
執行自動化指令碼
如要自動設定通知工具的通知,請按照下列步驟操作:
使用專案 ID 和區域設定 Google Cloud CLI:
gcloud config set project project-id gcloud config set run/region region其中:
project-id是您的 Google Cloud 專案 ID。region是要部署通知工具的區域。
在存放區根目錄中執行下列指令:
./setup.sh githubissues config-path -b bucket-name -t template-path -s secret-name
其中:
config-path是通知工具設定檔的路徑。bucket-name是 Cloud Storage bucket 的名稱,設定指令碼會將設定和範本檔案上傳到這個 bucket。如果省略-b,指令碼會產生含有隨機後置字串 (notifiers-config-random-suffix) 的 bucket 名稱。template-path是通知器範本檔案的路徑。通知器範本檔案包含託管於 Cloud Storage 的 JSON 範本,代表通知訊息。您可以使用這個變數,或在通知工具設定檔的uri欄位中,將通知工具範本檔案納入為路徑。secret-name是儲存在 Secret Manager 中的密鑰名稱。
執行指令碼後,您會看到下列訊息:
** NOTIFIER SETUP COMPLETE **
通知器現已設定完成。您可以在 cloud-build-notifiers 存放區中查看完整指令碼,或執行 ./setup.sh --help,瞭解指令碼的使用說明。
後續步驟
- 瞭解 Cloud Build 通知工具。
- 瞭解如何訂閱建構作業通知。
- 瞭解如何編寫 Cloud Build 建構設定檔。