您可以使用 Cloud Build 通知程序配置 Cloud Build,以将构建通知发送到 Slack、Google Chat、SMTP 服务器、HTTP 端点或 BigQuery 实例。本页面介绍如何为所需的通知程序自动执行配置过程。
自动通知配置
Cloud Build 提供设置脚本,可用于自动通知配置。要使用设置脚本配置通知,请执行以下操作:
Slack
设置
以下部分介绍了在对通知程序进行自动通知配置前需要完成的步骤。
正在启用 API
Enable the Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager APIs.
获取和存储凭据
为要向其发送通知的 Slack 工作区创建 Slack 应用。
激活传入的网络钩子,将消息从 Cloud Build 发布到 Slack。
导航到您的 Slack 应用,找到传入的网络钩子的网址。您的网址将如下所示:
http://hooks.slack.com/services/...
将传入的网络钩子网址存储在 Secret Manager 中:
在 Google Cloud 控制台中打开 Secret Manager 页面:
点击创建密钥。
为您的密钥输入一个名称。
在密钥值下,为您的 Slack 应用添加传入的网络钩子网址。
如需保存您的密钥,请点击创建密钥。
编写通知程序配置文件
编写通知程序配置文件以配置您的 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://example-gcs-bucket/slack.json
secrets:
- name: webhook-url
value: projects/project-id/secrets/secret-name/versions/latest
其中:
webhook-url
是此示例中引用 Secret Manager 中存储的 Slack 网络钩子网址路径的配置变量。此处指定的变量名称应与secrets
下的name
字段匹配。project-id
是您的 Google Cloud 项目的 ID。secret-name
是您的 Secret 的名称,其中包含 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 -t template-path -s secret-name
其中:
config-path
是通知程序配置文件的路径。template-path
是通知程序模板文件的路径。您的 通知程序模板文件包含 Cloud Storage 上加热的 JSON 模板,以及 代表您的通知消息。您可以将通知程序模板文件包括在内 指定为路径,或者放在通知程序配置文件的uri
字段中。secret-name
是 Secret Manager 中存储的 Secret 的名称。
运行脚本后,您将看到以下消息:
** NOTIFIER SETUP COMPLETE **
现在,你的通知程序已设置完毕。您可以在 cloud-build-notifiers 代码库中查看完整脚本,也可以运行 ./setup.sh --help
,了解与该脚本关联的使用说明。
SMTP
设置
以下部分介绍了在对通知程序进行自动通知配置前需要完成的步骤。
正在启用 API
Enable the Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager APIs.
存储凭据
将发件人的电子邮件账号密码存储在 Secret Manager 中:
在 Google Cloud 控制台中打开 Secret Manager 页面:
点击创建密钥。
为您的密钥输入一个名称。
在密钥值下,添加发件人的电子邮件账号密码。
如需保存您的密钥,请点击创建密钥。
编写通知程序配置文件
编写通知程序配置文件以配置您的 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:example-gcs-bucket/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
是您的 Secret 的名称,其中包含发件人的电子邮件账号的密码。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 -t template-path -s secret-name
其中:
config-path
是通知程序配置文件的路径。template-path
是通知程序模板文件的路径。您的 通知程序模板文件包含 Cloud Storage 上加热的 JSON 模板,以及 代表您的通知消息。您可以将通知程序模板文件包括在内 指定为路径,或者放在通知程序配置文件的uri
字段中。secret-name
是 Secret Manager 中存储的 Secret 的名称。
运行脚本后,您将看到以下消息:
** NOTIFIER SETUP COMPLETE **
现在,你的通知程序已设置完毕。您可以在 cloud-build-notifiers 代码库中查看完整脚本,也可以运行 ./setup.sh --help
,了解与该脚本关联的使用说明。
BigQuery
设置
以下部分介绍了在对通知程序进行自动通知配置前需要完成的步骤。
正在启用 API
Enable the Cloud Build, Cloud Run, Pub/Sub, and BigQuery APIs.
授予权限
向 Cloud Run 服务账号授予创建和写入 BigQuery 表的权限,以及获取与构建相关的 Artifact Registry 数据的权限:
前往 Google Cloud 控制台中的 IAM 页面:
找到与您的项目关联的 Compute Engine 默认服务账号:
您的 Compute Engine 默认服务账号将如下所示,其中 project-number 是您的项目编号:
project-number-compute@developer.gserviceaccount.com
点击您的 Compute Engine 默认服务账号所在行中的铅笔图标。
您将看到修改访问权限标签页。
点击添加其他角色。
添加以下角色:
- Artifact Registry Reader
BigQuery Data Editor
借助 Artifact Registry Reader 角色,您可以针对映像提取数据。BigQuery Data Editor 为您提供数据的读写访问权限。
点击保存。
编写通知程序配置文件
编写通知程序配置文件以配置您的 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://example-gcs-bucket/bq.json
其中:
project-id
是您的 Google Cloud 项目的 ID。dataset-name
是您要为数据集指定的名称。table-name
是您要为表指定的名称。
通知程序配置文件中的 table-name 可以参考:
- 不存在的表
- 没有架构的空表
具有与 BigQuery 通知程序中的架构规范匹配的架构的现有表
uri
字段引用bq.json
文件。此文件引用托管在 Cloud Storage 上的 JSON 模板,表示要插入 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 -t config-path -t template-path
其中:
config-path
是通知程序配置文件的路径。template-path
是通知程序模板文件的路径。您的 通知程序模板文件包含 Cloud Storage 上加热的 JSON 模板,以及 代表您的通知消息。您可以将通知程序模板文件包括在内 指定为路径,或者放在通知程序配置文件的uri
字段中。
运行脚本后,您将看到以下消息:
** NOTIFIER SETUP COMPLETE **
现在,你的通知程序已设置完毕。您可以在 cloud-build-notifiers 代码库中查看完整脚本,也可以运行
./setup.sh --help
,了解与该脚本关联的使用说明。
HTTP
设置
以下部分介绍了在对通知程序进行自动通知配置前需要完成的步骤。
正在启用 API
Enable the Cloud Build, Cloud Run, and Pub/Sub APIs.
编写通知程序配置文件
编写通知程序配置文件以配置您的 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://example-gcs-bucket/http.json
其中:
url
是此示例中用于指定请求网址的配置变量。- url 是您想要指定为收件人服务器的网址。
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 -t config-path
其中:
config-path
是通知程序配置文件的路径。
运行脚本后,您将看到以下消息:
** NOTIFIER SETUP COMPLETE **
现在,你的通知程序已设置完毕。您可以在 cloud-build-notifiers 代码库中查看完整脚本,也可以运行 ./setup.sh --help
,了解与该脚本关联的使用说明。
Google Chat
设置
以下部分介绍了在对通知程序进行自动通知配置前需要完成的步骤。
正在启用 API
Enable the Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager APIs.
获取和存储凭据
创建聊天室 。
在创建的聊天室中,创建传入的网络钩子,将消息从 Cloud Build 发布到 Google Chat。您的网址将如下所示:
https://chat.googleapis.com/v1/spaces/...
将传入的网络钩子网址存储在 Secret Manager 中:
在 Google Cloud 控制台中打开 Secret Manager 页面:
点击创建密钥。
为您的密钥输入一个名称。
在密钥值下,为您的 Google Chat 聊天室添加传入的网络钩子网址。
如需保存您的密钥,请点击创建密钥。
编写通知程序配置文件
编写通知程序配置文件以配置 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 网络钩子网址路径的配置变量。此处指定的变量名称应与secrets
下的name
字段匹配。project-id
是您的 Google Cloud 项目的 ID。secret-name
是您的 Secret 的名称,其中包含 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 -s secret-name
其中:
config-path
是通知程序配置文件的路径。secret-name
是 Secret Manager 中存储的 Secret 的名称。
运行脚本后,您将看到以下消息:
** NOTIFIER SETUP COMPLETE **
现在,你的通知程序已设置完毕。您可以在 cloud-build-notifiers 代码库中查看完整脚本,也可以运行 ./setup.sh --help
,了解与该脚本关联的使用说明。
GitHub 问题
设置
以下部分介绍了在对通知程序进行自动通知配置前需要完成的步骤。
正在启用 API
Enable the Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager APIs.
获取和存储凭据
创建 GitHub 个人访问令牌:
- 前往 GitHub 设置以创建新令牌。
选择
repo
范围。点击生成令牌
将令牌存储在 Secret Manager 中:
打开 Google Cloud 控制台中的 Secret Manager 页面:
点击创建密钥。
为您的密钥输入一个名称。
在密钥值下,添加您的 GitHub 令牌。
如需保存您的密钥,请点击创建密钥。
编写模板配置文件
编写一个模板配置文件,描述创建的 GitHub 问题应采用的格式:
在以下模板配置文件示例中,title
和 body
字段使用了 build 中的替换变量:
{
"title": "Build {{.Build.BuildTriggerId}}: {{.Build.Status}}",
"body": "[{{.Build.ProjectId}}] {{.Build.BuildTriggerId}} status: **{{.Build.Status}}**\n\n[View Logs]({{.Build.LogUrl}})"
}
如需查看该示例,请参阅 GitHub 问题通知程序的模板配置文件。
您可以通过用于创建问题的 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://project-id-notifiers-config/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
字段匹配。project-id-notifiers-config
是模板上传的位置,如果该存储桶不存在,系统会创建一个。template-file-name
是模板文件的名称。myuser/myrepo
是将要针对其创建问题的代码库的名称。project-id
是您的 Google Cloud 项目的 ID。secret-name
是包含您的 GitHub 令牌的 Secret 的名称。
如需查看此示例,请参阅 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 -t template-path -s secret-name
其中:
config-path
是通知程序配置文件的路径。template-path
是通知程序模板文件的路径。您的 通知程序模板文件包含 Cloud Storage 上加热的 JSON 模板,以及 代表您的通知消息。您可以将通知程序模板文件包括在内 指定为路径,或者放在通知程序配置文件的uri
字段中。secret-name
是 Secret Manager 中存储的 Secret 的名称。
运行脚本后,您将看到以下消息:
** NOTIFIER SETUP COMPLETE **
现在,你的通知程序已设置完毕。您可以在 cloud-build-notifiers 代码库中查看完整脚本,也可以运行 ./setup.sh --help
,了解与该脚本关联的使用说明。
后续步骤
- 了解 Cloud Build 通知器。
- 了解如何订阅构建通知。
- 了解如何编写 Cloud Build 构建配置文件。