如何将Cloud Build Webhook负载中的值传递给替换变量?
解决Google Cloud Build Webhook Trigger替换变量传递失效问题
问题原因
你当前的写法有误:Cloud Build的substitutions字段无法直接引用Webhook请求体中的body变量,该变量仅能在构建步骤的脚本中访问,无法提前赋值给自定义替换变量。
正确实现方式
1. 修改构建YAML文件
利用Cloud Build自动注入的$_WEBHOOK_REQUEST_BODY环境变量(存储Webhook完整请求体),结合jq工具解析JSON内容提取所需值。调整后的内联YAML如下:
steps: - name: 'google/cloud-sdk:slim' args: - '-c' - >- PROJECT_ID_FROM_WEBHOOK=$(echo "$_WEBHOOK_REQUEST_BODY" | jq -r '.substitutions.projectId'); REPO_NAME_FROM_WEBHOOK=$(echo "$_WEBHOOK_REQUEST_BODY" | jq -r '.substitutions.repoName'); echo "SUB1:$PROJECT_ID_FROM_WEBHOOK SUB2:$REPO_NAME_FROM_WEBHOOK PROJECT_ID:$PROJECT_ID REPO_NAME:$REPO_NAME" entrypoint: bash
2. 关键细节说明
$_WEBHOOK_REQUEST_BODY是Cloud Build为Webhook触发器自动添加的环境变量,无需手动配置jq -r用于解析JSON并输出无引号的原始字符串,避免额外引号干扰- 选用
google/cloud-sdk:slim镜像是因为它预装了jq工具;若需使用maven镜像,可在步骤开头添加apt-get update && apt-get install -y jq命令安装jq
3. 保持请求体格式不变
你的Webhook POST请求体格式无需修改,继续使用:
{ "substitutions": { "projectId": "ABC", "repoName": "XYZ" } }
内容的提问来源于stack exchange,提问作者Aswin Sudhakaran
相关产品推荐
相关产品推荐

