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

如何在GitHub Workflow的curl请求JSON载荷中引用环境变量

问题根因
  • 缺失ACR_PATH环境变量定义:你提供的Workflow全局env配置中没有声明ACR_PATH,所有引用该变量的步骤都会读取到空值
  • Bash单引号特性导致变量不解析:你用单引号包裹JSON载荷字符串,Bash中单引号会强制所有内容按字面量处理,不会做任何变量替换、表达式解析
  • 直接拼接JSON有格式风险:如果你的环境变量包含空格、双引号等特殊字符,直接写入JSON会破坏结构,导致请求参数非法报错
修复方案

推荐用jq生成合法JSON,自动处理转义、变量替换,避免格式问题,你需要先补全ACR_PATH的定义,修复后的Create Container Web步骤代码如下:

- name: Create Container Web
  #if: steps.pr-label.outputs.result == 'true'
  env:
    # 此处填写你自己的ACR镜像地址前缀,也可以直接写到Workflow全局env配置中
    ACR_PATH: "你的ACR镜像地址前缀"
  run: |
    AUTH_HEADER="Authorization: token $DEPLOYMENT_URL_TOKEN"
    CONTAINER_WEB_NAME="CONATINER"
    PROJECT_NAME="tirumalesh-automate"
    REGION="US"
    URL="https://abcd.com/$REGION/$PROJECT_NAME/container-web/$CONTAINER_WEB_NAME"
    # 用jq生成JSON,自动处理变量注入和特殊字符转义
    PAYLOAD=$(jq -n \
      --arg image "$ACR_PATH:$SNAPSHOT_VERSION" \
      --arg key_vault "$KEY_VAULT" \
      '{
        "spec": {
          "image": $image,
          "secrets": {
            "key_vaults": [
              {
                "name": $key_vault,
                "secrets": [
                  {
                    "name": "mysql-pwd",
                    "environment_variable": "mysql_pwd"
                  }
                ]
              }
            ]
          }
        }
      }')
    curl --location --request PUT 'https://abcd/us/projects/tirumalesh-automate/resources/container-web/configuration-service' \
    --header "$AUTH_HEADER" \
    --header 'Content-Type: application/json' \
    --data-raw "$PAYLOAD"

如果你不想用jq,也可以把包裹JSON的单引号换成双引号,内部的双引号全部转义即可实现变量解析:

PAYLOAD="{
  \"spec\": {
    \"image\": \"${ACR_PATH}:${SNAPSHOT_VERSION}\",
    \"secrets\": {
      \"key_vaults\": [
        {
          \"name\": \"${KEY_VAULT}\",
          \"secrets\": [
            {
              \"name\": \"mysql-pwd\",
              \"environment_variable\": \"mysql_pwd\"
            }
          ]
        }
      ]
    }
  }
}"
额外注意事项

原Workflow代码中Create Container Web步骤的#if注释行缩进错误,比下方的run多了2个空格,会导致Workflow语法校验失败,需要对齐缩进。

内容的提问来源于stack exchange,提问作者Tim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:09:03