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

GitHub Actions中环境变量替换失效问题排查

问题原因及解决方法

问题出在第一步创建模板文件时,bash会自动展开here-doc中的变量,而此时CLIENT_ID和CLIENT_SECRET并未定义,导致模板文件中的占位符被替换为空字符串。后续envsubst执行时,没有可替换的占位符,所以最终文件中这两个字段是空的。

解决方法是对here-doc的结束标记EOF添加单引号,阻止bash提前展开变量:

修正后的第一步步骤

- name: create the template for mdm file
  shell: bash
  run: | 
    cat > mdm.xml.template <<'EOF'
    <dict>
      <key>organization</key>
      <string>myorg</string>
      <key>auth_client_id</key>
      <string>${CLIENT_ID}</string>
      <key>auth_client_secret</key>
      <string>${CLIENT_SECRET}</string>
    </dict>
    EOF

这样模板文件会保留${CLIENT_ID}和${CLIENT_SECRET}的原始字符串,当第二步执行envsubst时,就能正确替换为env字段中定义的FOO和BAR值。

本地执行时正常是因为你先export了变量,创建模板时变量已经存在,bash展开后是正确的值;但在GitHub Actions的第一步中这些变量未定义,所以展开为空。使用单引号包裹EOF可以避免这个问题,无论变量是否存在,都会保留占位符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 20:33:31