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

如何在GitHub Actions作业间传递作业级环境变量?

问题解决方法

你的问题出在两个核心点:

  1. Ubuntu runner默认使用bash环境,你错误采用了PowerShell的环境变量写法$env:GITHUB_ENV,正确的bash写法应为$GITHUB_ENV。
  2. 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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:22:45