name: Test 18 #https://stackoverflow.com/questions/70326569/github-workflow-how-to-conditionally-setup-env-for-all-subsequent-jobs

on:
  workflow_dispatch:
  push:

jobs:
  setup-job:
    runs-on: ubuntu-latest
    outputs:
      var1: ${{ steps.set-variable.outputs.test }}
    steps:
      - uses: actions/checkout@v2
      - name: Set test variable
        id: set-variable
        run: |
          if [ ${{ github.ref }} != 'refs/heads/main' ]; then
            echo "IS NOT main branch"
            echo "test=abc" >> $GITHUB_ENV
            echo "::set-output name=test::abc"
          else
            echo "IS main branch"
            echo "test=123" >> $GITHUB_ENV
            echo "::set-output name=test::123"
          fi
        shell: bash
      - name: Read exported variable
        run: |
          echo "ENV: ${{ env.test }}"
          echo "OUTPUT: ${{ steps.check.test-env.test }}"

  subsequent-job:
    runs-on: ubuntu-latest
    needs: [setup-job]
    steps:
      - uses: actions/checkout@v2
      - name: Read exported variable
        run: |
          echo "ENV: ${{ env.test }}"
          echo "OUTPUT: ${{needs.setup-job.outputs.var1}}"