自动配置通知

您可以使用 Cloud Build 通知程序配置 Cloud Build,以将构建通知发送到 Slack、SMTP 服务器、HTTP 端点或 BigQuery 实例。本页面介绍如何为所需的通知程序自动执行配置过程。

自动通知配置

Cloud Build 提供设置脚本,可用于自动通知配置。要使用设置脚本配置通知,请执行以下操作:

Slack

设置

以下部分介绍了在对通知程序进行自动通知配置前需要完成的步骤。

正在启用 API

启用 Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager API。

启用 API

获取和存储凭据

  1. 为要向其发送通知的 Slack 工作区创建 Slack 应用

  2. 激活传入的网络钩子,将消息从 Cloud Build 发布到 Slack。

  3. 导航到您的 Slack 应用,找到传入的网络钩子的网址。您的网址将如下所示:

    http://hooks.slack.com/services/...
    
  4. 将传入的网络钩子网址存储在 Secret Manager 中:

    1. 打开 Google Cloud Console 中的 Secret Manager 页面:

      打开 Secret Manager 页面

    2. 点击创建密钥

    3. 为您的密钥输入一个名称。

    4. 密钥值下,为您的 Slack 应用添加传入的网络钩子网址。

    5. 如需保存您的密钥,请点击创建密钥

授予权限

Cloud Run 使用 Compute Engine 默认服务帐号运行您的通知程序映像。如要服务帐号能够从 Secret Manager 中提取您的 Secret,您必须向服务帐号授予 Secret Manager Secret Accessor 角色:

为 Cloud Run 服务帐号授予对您的密钥的访问权限:

  1. 在 Google Cloud Console 中转到 IAM 页面:

    打开 IAM 页面

  2. 找到与您的项目关联的 Compute Engine 默认服务帐号

    您的 Compute Engine 默认服务帐号将如下所示,其中 project-number 是您的项目编号:

    project-number-compute@developer.gserviceaccount.com
    

    记下您的 Compute Engine 默认服务帐号

  3. 打开 Google Cloud Console 中的 Secret Manager 页面:

    打开 Secret Manager 页面

  4. 点击包含 secret 的 Secret 名称。

  5. 权限标签页中,点击添加主帐号

  6. 找到与您的项目关联的 Compute Engine 默认服务帐号

  7. 选择 Secret Manager Secret Accessor 作为角色。

  8. 点击保存

编写通知程序配置文件

编写通知程序配置文件以配置您的 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
    secrets:
    - name: webhook-url
       value: projects/project-id/secrets/secret-name/versions/latest

其中:

  • webhook-url 是此示例中引用 Secret Manager 中存储的 Slack 网络钩子网址路径的配置变量。此处指定的变量名称应与 secrets 下的 name 字段匹配。
  • project-id 是您的 Cloud 项目的 ID。
  • secret-name 是您的 Secret 的名称,其中包含 Slack Webhook 网址。

如需查看此示例,请参阅 Slack 通知程序的通知程序配置文件

运行自动化脚本

如需自动配置通知,请执行以下操作:

  1. 克隆 cloud-build-notifiers 代码库

  2. 在代码库的根目录中运行以下命令:

     ./setup.sh notifier config-path secret-name
    

    其中:

    • notifier 是通知程序的名称,例如 slacksmtpbigqueryhttp
    • config-path 是通知程序配置文件的路径。
    • secret-name 是 Secret Manager 中存储的 Secret 的名称。

运行脚本后,您将看到以下消息:

** NOTIFIER SETUP COMPLETE **

现在,你的通知程序已设置完毕。您可以在 cloud-build-notifiers 代码库中查看完整脚本,也可以运行 ./setup.sh --help,了解与该脚本关联的使用说明。

SMTP

设置

以下部分介绍了在对通知程序进行自动通知配置前需要完成的步骤。

正在启用 API

启用 Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager API。

启用 API

存储凭据

  1. 将发件人的电子邮件帐号密码存储在 Secret Manager 中:

  2. 打开 Google Cloud Console 中的 Secret Manager 页面:

    打开 Secret Manager 页面

  3. 点击创建密钥

  4. 为您的密钥输入一个名称。

  5. 密钥值下,添加发件人的电子邮件帐号密码。

  6. 如需保存您的密钥,请点击创建密钥

授予权限

Cloud Run 使用 Compute Engine 默认服务帐号运行您的通知程序映像。如要服务帐号能够从 Secret Manager 中提取您的 Secret,您必须向服务帐号授予 Secret Manager Secret Accessor 角色:

为 Cloud Run 服务帐号授予对您的密钥的访问权限:

  1. 在 Google Cloud Console 中转到 IAM 页面:

    打开 IAM 页面

  2. 找到与您的项目关联的 Compute Engine 默认服务帐号

    您的 Compute Engine 默认服务帐号将如下所示,其中 project-number 是您的项目编号:

    project-number-compute@developer.gserviceaccount.com
    

    记下您的 Compute Engine 默认服务帐号

  3. 打开 Google Cloud Console 中的 Secret Manager 页面:

    打开 Secret Manager 页面

  4. 点击包含 secret 的 Secret 名称。

  5. 权限标签页中,点击添加主帐号

  6. 找到与您的项目关联的 Compute Engine 默认服务帐号

  7. 选择 Secret Manager Secret Accessor 作为角色。

  8. 点击保存

编写通知程序配置文件

编写通知程序配置文件以配置您的 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
   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 是您的 Cloud 项目的 ID。
  • secret-name是您的 Secret 的名称,其中包含发件人的电子邮件帐号的密码。

如需查看此示例,请参阅 SMTP 通知程序的通知程序配置文件

运行自动化脚本

如需自动配置通知,请执行以下操作:

  1. 克隆 cloud-build-notifiers 代码库

  2. 在代码库的根目录中运行以下命令:

     ./setup.sh notifier config-path secret-name
    

    其中:

    • notifier 是通知程序的名称,例如 slacksmtpbigqueryhttp
    • config-path 是通知程序配置文件的路径。
    • secret-name 是 Secret Manager 中存储的 Secret 的名称。

运行脚本后,您将看到以下消息:

** NOTIFIER SETUP COMPLETE **

现在,你的通知程序已设置完毕。您可以在 cloud-build-notifiers 代码库中查看完整脚本,也可以运行 ./setup.sh --help,了解与该脚本关联的使用说明。

BigQuery

设置

以下部分介绍了在对通知程序进行自动通知配置前需要完成的步骤。

正在启用 API

启用 Cloud Build, Cloud Run, Pub/Sub, and BigQuery API。

启用 API

授予权限

向 Cloud Run 服务帐号授予创建和写入 BigQuery 表的权限,以及获取与构建相关的 Artifact Registry 数据的权限:

  1. 在 Google Cloud Console 中转到 IAM 页面:

    打开 IAM 页面

  2. 找到与您的项目关联的 Compute Engine 默认服务帐号

    您的 Compute Engine 默认服务帐号将如下所示,其中 project-number 是您的项目编号:

        project-number-compute@developer.gserviceaccount.com
    
  3. 点击您的 Compute Engine 默认服务帐号所在行中的铅笔图标。

    您将会看到修改权限标签页。

    1. 点击添加其他角色

    2. 添加以下角色:

      • Artifact Registry Reader
      • BigQuery Data Editor

        借助 Artifact Registry Reader 角色,您可以针对映像提取数据。BigQuery Data Editor 为您提供数据的读写访问权限。

    3. 点击保存

编写通知程序配置文件

编写通知程序配置文件以配置您的 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

其中:

  • project-id 是您的 Cloud 项目的 ID。
  • dataset-name 是您要为数据集指定的名称。
  • table-name 是您要为表指定的名称。

通知程序配置文件中的 table-name 可以参考:

  • 不存在的表
  • 没有架构的空表
  • 具有与 BigQuery 通知程序中的架构规范匹配的架构的现有表

如需查看此示例,请参阅 BigQuery 通知程序的通知程序配置文件

运行自动化脚本

如需自动配置通知,请执行以下操作:

  1. 克隆 cloud-build-notifiers 代码库

  2. 在代码库的根目录中运行以下命令:

     ./setup.sh notifier config-path
    

    其中:

    • notifier 是通知程序的名称,例如 slacksmtpbigqueryhttp
    • config-path 是通知程序配置文件的路径。

运行脚本后,您将看到以下消息:

** NOTIFIER SETUP COMPLETE **

现在,你的通知程序已设置完毕。您可以在 cloud-build-notifiers 代码库中查看完整脚本,也可以运行 ./setup.sh --help,了解与该脚本关联的使用说明。

HTTP

设置

以下部分介绍了在对通知程序进行自动通知配置前需要完成的步骤。

正在启用 API

启用 Cloud Build, Cloud Run, and Pub/Sub API。

启用 API

编写通知程序配置文件

编写通知程序配置文件以配置您的 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

其中:

  • url 是此示例中用于指定请求网址的配置变量。
  • url 是您想要指定为收件人服务器的网址。

如需查看此示例,请参阅 HTTP 通知程序的通知程序配置文件

运行自动化脚本

如需自动配置通知,请执行以下操作:

  1. 克隆 cloud-build-notifiers 代码库

  2. 在代码库的根目录中运行以下命令:

     ./setup.sh notifier config-path
    

    其中:

    • notifier 是通知程序的名称,例如 slacksmtpbigqueryhttp
    • config-path 是通知程序配置文件的路径。

运行脚本后,您将看到以下消息:

** NOTIFIER SETUP COMPLETE **

现在,你的通知程序已设置完毕。您可以在 cloud-build-notifiers 代码库中查看完整脚本,也可以运行 ./setup.sh --help,了解与该脚本关联的使用说明。

后续步骤