GitHub Workflows 全局 env 配置节中是否支持引用其他变量?
GitHub Workflows 全局env节同节变量引用问题解答
结论是不支持在env配置节内部直接引用同节定义的其他环境变量,你给出的两种写法都不能正常生效。
- GitHub Actions 解析全局
env节时是一次性完成所有变量的初始化,不会按书写顺序逐行赋值,所以在env节内部用${{ env.xxx }}或者直接${xxx}引用同节的其他变量,只会拿到空值或者未解析的占位符文本。 - 你写的
local_tag: "${{env.isqa}}latest",运行时local_tag的值只会是字符串"latest",因为此时env.isqa还未完成初始化,解析结果为空。 - 你写的
aws_taskdef: "project-${project}-something"不符合GitHub Actions的变量插值规则,会直接被当成普通字符串处理,最终值就是"project-${project}-something"。
如果要实现变量复用,可以采用两种可行方案:
- 把需要复用的基础变量抽离到
env节之外,比如用vars节定义仓库/组织级配置变量,或者在工作流开头加一个专门的初始化job,提前计算好所有需要的变量作为输出,后续job直接引用该输出即可。 - 在具体step中完成衍生变量的拼接,step执行时全局
env已经全部初始化完成,此时可以正常引用已有变量:
env: isqa: "" project: "important" jobs: build: runs-on: ubuntu-latest steps: - name: 配置衍生变量 run: | echo "local_tag=${{ env.isqa }}latest" >> $GITHUB_ENV echo "aws_taskdef=project-${{ env.project }}-something" >> $GITHUB_ENV - name: 验证变量 run: | echo ${{ env.local_tag }} echo ${{ env.aws_taskdef }}
内容的提问来源于stack exchange,提问作者libxelar.so
相关产品推荐
相关产品推荐

