设置网络钩子

本页介绍了如何在 Secure Source Manager 中设置 Webhook。

Webhook 是由 Secure Source Manager 中的事件触发并发送到用户指定网址的 HTTP 请求。

准备工作

  1. 创建 Secure Source Manager 实例
  2. 创建 Secure Source Manager 代码库

所需的角色

如需获得创建 Webhook 所需的权限,请让管理员向您授予以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

如需了解如何授予 Secure Source Manager 角色,请参阅使用 IAM 进行访问权限控制向用户授予实例访问权限

设置网络钩子

  1. 在 Secure Source Manager 网页界面中,找到要为其创建 Webhook 的代码库。
  2. 点击设置
  3. 点击 Webhooks,然后点击 Add webhook
  4. Hook ID 字段中,输入 Webhook 的 ID。

  5. 目标网址字段中,输入 Webhook 网址。例如,如果您想在 Jenkins 中触发 build,可以设置 Webhook 触发器,然后在此处输入 Jenkins 触发器网址,以在 Jenkins 中触发 build。

  6. 如果 Webhook 网址包含您在创建 Webhook 触发器时输入的密钥和 Secret 值,请从目标网址末尾移除这些值,然后将其复制到敏感查询字符串字段。

    如需在网络钩子网址中找到您的密钥和密钥,请查找以 key= 开头的文本

    例如,假设有以下网址: https://cloudbuild.googleapis.com/v1/projects/my-project/triggers/test-trigger:webhook?key=eitIfKhYnv0LrkdsyHqIros8fbsheKRIslfsdngf&secret=Hello%20Secret%20Manager

    复制并移除目标网址字段中以问号 ?key=... 开头的部分。然后移除初始问号,将剩余部分 key=... 移至敏感查询字符串字段。

  7. 触发条件部分中,选择以下选项之一:

    • 推送:在向代码库推送时触发。
    • 拉取请求状态已更改:在拉取请求状态发生更改时触发。
  8. 如果您选择了推送,则可以在分支过滤条件字段中输入推送事件的许可名单。

    分支过滤条件字段使用 glob 模式,只有对匹配分支的操作才会触发 build。如果该字段为空或为 *,则系统会报告所有分支的推送事件。如需了解语法,请参阅 glob 文档。

  9. 点击 Add webhook

  10. Webhook 会显示在 Webhook 页面中。

测试您的网络钩子

  1. 在 Secure Source Manager 的网络钩子页面中,点击要测试的网络钩子。
  2. 前往页面底部,然后点击测试交付

    系统会将占位符事件添加到传送队列中。它可能需要几秒钟才能显示在配送记录中。

  3. 您还可以使用 git 命令推送或合并拉取请求,以测试 Webhook。

  4. 在配置了 Webhook 触发器的服务的构建历史记录中,检查已触发的构建或事件的状态。

  5. 发送第一个测试交付后,您还可以在 Secure Source Manager webhook 页面的最近的交付部分查看测试交付的请求响应

使用载荷数据替换 Cloud Build YAML 变量

如果您使用 Webhook 连接到 Cloud Build,则可以使用 Secure Source Manager Webhook 载荷数据替换 Cloud Build YAML 变量。

  1. 在 Secure Source Manager 的 Webhook 页面上,点击近期交付部分中的顶行。

    系统会显示 webhook 载荷发送的请求标头和内容。

  2. 前往 Cloud Build 信息中心,然后点击触发器

  3. 点击要配置的触发器。

  4. 高级部分替代变量下,点击 + 添加变量

  5. 输入变量的名称和值。值前缀为 body

    例如,如需将 _REPO_URL 替换为载荷数据字段 repository.clone_url,并将 _COMMIT_SHA 替换为 Cloud Build YAML 中的最新提交 SHA,请输入以下名称和值:

    • 变量 1:_REPO_URL 值 1:$(body.repository.clone_url)
    • 变量 2:_COMMIT_SHA 值 2:$(body.after)

    Cloud Build YAML 文件类似于以下内容:

    steps:
    - name: gcr.io/cloud-builders/git
      env:
      - '_REPO_URL=$_REPO_URL'
      - '_COMMIT_SHA=$_COMMIT_SHA'
      script: |
        #!/bin/sh
        git clone ${_REPO_URL} /workspace
        cd /workspace
        git reset --hard ${_COMMIT_SHA}
    

后续步骤