GitHub Actions中导出的环境变量能否跨步骤共享?VAR_X需重复导出吗?
GitHub Actions环境变量跨步骤可用性问题解答
问题1:GitHub Actions中导出的环境变量是否可在所有步骤中使用?
- 用
export在run脚本里导出的环境变量:只在当前步骤的shell会话里有效,跨步骤根本用不了。原因很简单——每个步骤都是独立运行的进程或容器,各自的环境是隔离的,步骤跑完对应的环境就销毁了。 - 要是想让环境变量在所有步骤里都能用,得把它定义在job级别或者workflow级别的
env字段里,举个例子:
jobs: build: env: GLOBAL_VAR: "persistent-value" # 这个变量能被当前job下的所有步骤访问 steps: - name: Use global var run: echo $GLOBAL_VAR
问题2:示例YAML中VAR_X在步骤Y中是否仍可用,还是需要在每个需要它的步骤中重新导出?
先看你给出的YAML代码:
steps: - name: X env: VAR_X: ${{ inputs.var_x}} run: | export VAR_X=$VAR_X - name: Y env: VAR_X: ${{ inputs.var_x}} run: | export VAR_X=$VAR_X
- 步骤X里的
export VAR_X完全传不到步骤Y里,因为俩步骤是独立的会话。步骤Y里的VAR_X是靠自己的env字段重新从inputs.var_x拿的,和步骤X的操作没关系。 - 另外说个优化点:你这写法有点多余——步骤的
env字段已经把VAR_X注入到当前步骤的环境里了,run脚本里的export VAR_X=$VAR_X完全没必要,直接用$VAR_X就行。
内容的提问来源于stack exchange,提问作者Sabina Orazem
相关产品推荐
相关产品推荐

