第 6 章 为 webhook 创建 secret
您可以创建可与通用、GitHub 或 GitLab Webhook 搭配使用的 secret,以触发 Git 存储库中的应用构建。根据用于应用程序代码的 Git 托管平台类型,JWS Operator 提供了 webhookSecrets:generic,webhookSecrets:github, 和 webhookSecrets:gitlab 参数,可用于在自定义资源文件中为 web 应用程序指定 secret。
流程
创建 Base64 编码的 secret 字符串。
例如:
echo -n "qwerty" | base64
echo -n "qwerty" | base64Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前面的命令对纯文本字符串
qwerty进行编码,并显示编码的字符串。例如:
cXdlcnR5
cXdlcnR5Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建定义
Secret类型的对象的secret.yaml文件。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在前面的示例中,
jws-secret是 secret 的名称,cXdlcnR5是编码的 secret 字符串。运行以下命令来创建 secret:
oc create -f secret.yaml
oc create -f secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 前面的命令会显示一条消息,确认已创建了该机密。
例如:
secret/jws-secret created
secret/jws-secret createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 根据上例,您可以将
webhookSecrets:generic参数设置为jws-secret。
验证
获取 webhook 的 URL:
oc describe BuildConfig | grep webhooks
oc describe BuildConfig | grep webhooksCopy to Clipboard Copied! Toggle word wrap Toggle overflow 前面的命令以以下格式生成 Webhook URL:
https://<host>:<port>/apis/build.openshift.io/v1/namespaces/<namespace>/buildconfigs/<name>/webhooks/<secret>/generic
https://<host>:<port>/apis/build.openshift.io/v1/namespaces/<namespace>/buildconfigs/<name>/webhooks/<secret>/genericCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要向 webhook 发送请求,请输入以下
curl命令:curl -k -X POST https://<host>:<port>/apis/build.openshift.io/v1/namespaces/<namespace>/buildconfigs/<name>/webhooks/<secret>/generic
curl -k -X POST https://<host>:<port>/apis/build.openshift.io/v1/namespaces/<namespace>/buildconfigs/<name>/webhooks/<secret>/genericCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在前面的命令中,将 URL 字符串中的 &
lt;host>、<> 替换为适合您的环境的值。将;port>、<namespace> 和 <name<secret> 替换为纯文本 secret 字符串(如qwerty)。前面的命令以 JSON 格式生成以下 webhook 响应类型,并触发构建:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果
User "system:anonymous" 无法创建资源错误结果,您可以通过将未经身份验证的用户添加到system:webhook角色绑定或创建令牌并运行curl命令来解决这个错误。例如,要创建令牌并运行
curl命令:TOKEN=`oc create token builder` curl -H "Authorization: Bearer $TOKEN" -k -X POST https://<host>:<port>/apis/build.openshift.io/v1/namespaces/<namespace>/buildconfigs/<name>/webhooks/<secret>/generic
TOKEN=`oc create token builder` curl -H "Authorization: Bearer $TOKEN" -k -X POST https://<host>:<port>/apis/build.openshift.io/v1/namespaces/<namespace>/buildconfigs/<name>/webhooks/<secret>/genericCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要在 GitHub 中使用 Webhook:
- 在 GitHub 项目中,选择 Settings > Webhooks > Add webhook。
- 在 Payload URL 字段中,添加 URL。
-
将内容类型设置为
application/json。 - 如有必要,禁用 SSL 验证。
- 点击 Add webhook。
如需更多信息,请参阅 https://docs.openshift.com/container-platform/4.6/builds/triggering-builds-build-hooks.html。