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

Github Actions部署ARM模板时JSON参数被替换的问题

解决Github Actions中ARM模板部署时Tags参数传递问题

问题根源

Github Actions默认使用的bash shell会将{}识别为通配符或命令替换的特殊标记,直接传递JSON字符串时会被错误解析,最终导致参数异常。

可靠解决方法

方法1:通过临时文件传递参数(推荐)

将Tags的JSON内容写入临时文件,使用@文件名的方式传递给az命令,完全避免命令行转义问题:

- name: 部署ARM模板
  run: |
    # 将Tags JSON写入临时文件
    echo '{"key1": "value1", "key2": "value2", "key3": "value3"}' > tags-params.json
    # 执行部署命令,引用参数文件
    az deployment group create \
      --resource-group <你的资源组名称> \
      --template-file ./path/to/your/template.json \
      --parameters @tags-params.json

方法2:正确转义JSON字符串中的特殊字符

如果不想用文件传递,需要对JSON中的{}和双引号进行转义,确保bash不会解析这些特殊字符:

- name: 部署ARM模板
  run: |
    az deployment group create \
      --resource-group <你的资源组名称> \
      --template-file ./path/to/your/template.json \
      --parameters resourceTags='\{\"key1\": \"value1\", \"key2\": \"value2\", \"key3\": \"value3\"\}'

方法3:使用环境变量+双引号包裹

通过环境变量存储JSON字符串,在az命令中用双引号包裹变量,避免shell解析特殊字符:

- name: 部署ARM模板
  env:
    RESOURCE_TAGS: '{"key1": "value1", "key2": "value2", "key3": "value3"}'
  run: |
    az deployment group create \
      --resource-group <你的资源组名称> \
      --template-file ./path/to/your/template.json \
      --parameters resourceTags="$RESOURCE_TAGS"

验证模板参数定义

确保ARM模板中resourceTags参数的类型正确定义为object:

"parameters": {
  "resourceTags": {
    "type": "object",
    "metadata": {
      "description": "资源标签集合"
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 09:23:19