You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 20:33:11