本页介绍了如何在 Secure Source Manager 中设置 Webhook。
Webhook 是由 Secure Source Manager 中的事件触发并发送到用户指定网址的 HTTP 请求。
准备工作
所需的角色
如需获得创建 Webhook 所需的权限,请让管理员向您授予以下 IAM 角色:
-
针对 Secure Source Manager 代码库的 Secure Source Manager Repository Admin (
roles/securesourcemanager.repoAdmin
) -
Secure Source Manager Instance Accessor (
roles/securesourcemanager.instanceAccessor
) 在 Secure Source Manager 实例上
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
如需了解如何授予 Secure Source Manager 角色,请参阅使用 IAM 进行访问权限控制和向用户授予实例访问权限。
设置网络钩子
- 在 Secure Source Manager 网页界面中,找到要为其创建 Webhook 的代码库。
- 点击设置。
- 点击 Webhooks,然后点击 Add webhook。
在 Hook ID 字段中,输入 Webhook 的 ID。
在目标网址字段中,输入 Webhook 网址。例如,如果您想在 Jenkins 中触发 build,可以设置 Webhook 触发器,然后在此处输入 Jenkins 触发器网址,以在 Jenkins 中触发 build。
如果 Webhook 网址包含您在创建 Webhook 触发器时输入的密钥和 Secret 值,请从目标网址末尾移除这些值,然后将其复制到敏感查询字符串字段。
如需在网络钩子网址中找到您的密钥和密钥,请查找以
key=
开头的文本例如,假设有以下网址:
https://cloudbuild.googleapis.com/v1/projects/my-project/triggers/test-trigger:webhook?key=eitIfKhYnv0LrkdsyHqIros8fbsheKRIslfsdngf&secret=Hello%20Secret%20Manager
复制并移除目标网址字段中以问号
?key=...
开头的部分。然后移除初始问号,将剩余部分key=...
移至敏感查询字符串字段。在触发条件部分中,选择以下选项之一:
- 推送:在向代码库推送时触发。
- 拉取请求状态已更改:在拉取请求状态发生更改时触发。
如果您选择了推送,则可以在分支过滤条件字段中输入推送事件的许可名单。
分支过滤条件字段使用 glob 模式,只有对匹配分支的操作才会触发 build。如果该字段为空或为
*
,则系统会报告所有分支的推送事件。如需了解语法,请参阅 glob 文档。点击 Add webhook。
Webhook 会显示在 Webhook 页面中。
测试您的网络钩子
- 在 Secure Source Manager 的网络钩子页面中,点击要测试的网络钩子。
前往页面底部,然后点击测试交付。
系统会将占位符事件添加到传送队列中。它可能需要几秒钟才能显示在配送记录中。
您还可以使用
git
命令推送或合并拉取请求,以测试 Webhook。在配置了 Webhook 触发器的服务的构建历史记录中,检查已触发的构建或事件的状态。
发送第一个测试交付后,您还可以在 Secure Source Manager webhook 页面的最近的交付部分查看测试交付的请求和响应。
使用载荷数据替换 Cloud Build YAML 变量
如果您使用 Webhook 连接到 Cloud Build,则可以使用 Secure Source Manager Webhook 载荷数据替换 Cloud Build YAML 变量。
在 Secure Source Manager 的 Webhook 页面上,点击近期交付部分中的顶行。
系统会显示 webhook 载荷发送的请求标头和内容。
前往 Cloud Build 信息中心,然后点击触发器。
点击要配置的触发器。
在高级部分的替代变量下,点击 + 添加变量。
输入变量的名称和值。值前缀为
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}
- 变量 1: