Github Actionsでjobsやstepsで値を共有する方法

jobsではGITHUB_OUTPUTを使い、stepsではGITHUB_ENVを使う。

前提

前処理で取得したブランチ名や現在時間を別のstepやjobで使いたいときに使える方法。

詳細

jobsで値を共有する

name: play of GITHUB_OUTPUT

on:
  workflow_dispatch

jobs:
  github_output:
    name: github_output name
    runs-on: ubuntu-latest

    outputs:
      first: ${{ steps.step1.outputs.hoge }}

    steps:
      - id: step1
        run: echo "hoge=add github_output env" >> $GITHUB_OUTPUT

  hoge:
    name: hoge
    runs-on: ubuntu-latest
    needs: github_output

    steps:
      - run: |
          echo ${{ needs.github_output.outputs.first }}

github.com

詳細説明

stepでGITHUB_OUTPUTに値を設定。jobのoutputsに値を設定する。

    outputs:
      first: ${{ steps.step1.outputs.hoge }}

    steps:
      - id: step1
        run: echo "hoge=add github_output env" >> $GITHUB_OUTPUT

値を参照したいジョブでneedsを設定する。needsからoutputsの値を参照する。

    needs: github_output
    
    steps:
      - run: |
          echo ${{ needs.github_output.outputs.first }}

steps間で値を共有する

name: play of GITHUB_ENV

on:
  workflow_dispatch

jobs:
  github_env:
    name: github_env name
    runs-on: ubuntu-latest

    steps:
      - run: |
          echo env.ADD_ENV is ${{ env.ADD_ENV }}

      - run: |
          echo "ADD_ENV=true" >> $GITHUB_ENV

      - run: |
          echo env.ADD_ENV is ${{ env.ADD_ENV }}

github.com

詳細説明

echoでGITHUB_ENVに値をセット。 env.xxx で参照。

まとめ

set-output, set-envでも同じ事ができていたが、セキュリティの観点で 2023年5月末から使えなくなった。

場合によってはワークフローが動かなくなる可能性もあるため、今回紹介した方法を使うこと。

公式サイトはこちら。
docs.github.com