如何在GitHub Actions作业间传递作业级环境变量?
问题解决方法
你的问题出在两个核心点:
- Ubuntu runner默认使用bash环境,你错误采用了PowerShell的环境变量写法
$env:GITHUB_ENV,正确的bash写法应为$GITHUB_ENV。 - GitHub Actions里,
GITHUB_ENV设置的变量仅在当前job的步骤范围内有效,跨job传递变量必须通过job outputs机制实现。
以下是修正后的完整Workflow代码:
name: Main Workflow on: push: branches: - main jobs: mainjob1: runs-on: ubuntu-latest # 声明当前job要暴露给其他job的输出变量 outputs: var1: ${{ steps.set_var.outputs.var1 }} steps: - name: Set Variable and Output id: set_var run: | # 给当前job的后续步骤设置环境变量(可选操作) echo "var1=good" >> $GITHUB_ENV # 将变量写入步骤输出,供job级别的output引用 echo "var1=$var1" >> $GITHUB_OUTPUT mainjob2: needs: mainjob1 runs-on: ubuntu-latest steps: - name: Access Variable run: | echo "var1=${{ needs.mainjob1.outputs.var1 }}"
关键细节说明
- 给
mainjob1中设置变量的步骤添加id: set_var,用于后续引用该步骤的输出内容。 - 通过
echo "var1=$var1" >> $GITHUB_OUTPUT将变量传递到步骤的输出层,再由job的outputs字段暴露出去。 - 在
mainjob2中,通过needs.mainjob1.outputs.var1的语法读取跨job传递的变量。
内容的提问来源于stack exchange,提问作者Ashar
相关产品推荐
相关产品推荐

