Search code examples
githubenvironment-variablesgithub-actions

How to pass job level environment variable between jobs - Github Actions


I wish to read var1=good inside mainjob2, however, it does not print.

name: Main Workflow

on:
  push:
    branches:
      - main

jobs:
  mainjob1:
    runs-on: ubuntu-latest

    steps:
      - name: Set Variable
        run: |
          echo "var1=good" >> $env:GITHUB_ENV

  mainjob2:
    needs: mainjob1
    runs-on: ubuntu-latest

    steps:

      - name: Access Variable
        run: |
          echo "var1=${{ env.var1 }}"

I need help with Access Variable step.

I tried the below but none of them worked.

          echo "var1=${{ needs.mainjob1.env.var1 }}"
          echo "var1=${{ needs.mainjob1.output.env.var1 }}"

Solution

  • Try this:

    name: Main Workflow
    
    on:
      push:
        branches:
          - main
    
    jobs:
      mainjob1:
        runs-on: ubuntu-latest
        outputs:
          var1: ${{ steps.set_var.outputs.var1 }}
        steps:
          - name: Set Variable
            id: set_var
            run: |
              echo "var1=good" >> $GITHUB_OUTPUT
    
      mainjob2:
        needs: mainjob1
        runs-on: ubuntu-latest
    
        steps:
    
          - name: Access Variable
            run: |
              echo "var1=${{ needs.mainjob1.outputs.var1 }}"