如何在GitHub Action中传递Bash变量作为参数 解决变量不解析问题
问题解决方法
你遇到的是GitHub Actions跨步骤传递变量的典型场景,直接调整配置如下即可生效:
- name: Get version run: | # 将变量写入GitHub Actions内置的环境变量持久化文件 echo "VER=$(cat ver.txt)" >> $GITHUB_ENV - name: Build docker image uses: kciter/aws-ecr-action@v3 with: // 其余参数保持不变 extra_build_args: "--build-arg CURRENT_DD_VERSION=${{ env.VER }}"
核心原理说明
- 你之前在
run步骤内直接声明的VER是shell局部变量,仅在当前步骤的shell进程中生效,既无法传递到后续步骤,也不能在with字段的参数中被直接解析。 with字段的参数需要使用GitHub Actions专属的${{ 表达式 }}语法进行插值,不能直接使用shell的$VAR类语法。- 写入
$GITHUB_ENV的变量会被挂载到所有后续步骤的执行环境,可通过${{ env.变量名 }}的语法在YAML配置中直接读取。
可选方案:使用步骤输出传递
如果你不想污染全局环境变量,也可以通过步骤输出的方式传值:
- name: Get version id: get_ver # 给当前步骤设置id,用于后续步骤引用输出 run: | echo "ver=$(cat ver.txt)" >> $GITHUB_OUTPUT - name: Build docker image uses: kciter/aws-ecr-action@v3 with: // 其余参数保持不变 extra_build_args: "--build-arg CURRENT_DD_VERSION=${{ steps.get_ver.outputs.ver }}"
内容的提问来源于stack exchange,提问作者Stack Overflow
相关产品推荐
相关产品推荐

