🚀

GitHub ActionのGITHUB_OUTPUTをまるっと取り扱う

に公開

複数のジョブでGITHUB_OUTPUTに値を格納して、最終的にGITHUB_STEP_SUMMARYへ出力するような時に使った。

GitHub Actions

こんな感じで取れる。
toJSON(needs.do-output.outputs) が大事で、outputを抜き出してJSONにすることでハンドリングしやすくする。

jobs:
  do-output:
    runs-on: ubuntu-latest
    outputs:
      HOGE: ${{ steps.step1.outputs.hoge }}
      FUGA: ${{ steps.step2.outputs.fuga }}
    steps:
      - id: step1
        run: echo "hoge=hogehoge" >> $GITHUB_OUTPUT
      - id: step2
        run: echo "fuga=fugafuga" >> $GITHUB_OUTPUT

  print-output:
    runs-on: ubuntu-latest
    needs: do-output
    steps:
      - uses: actions/github-script@v7
        env:
          outputs: ${{ toJSON(needs.do-output.outputs) }}
        with:
          script: |
            const outputs = JSON.parse(process.env.outputs)
            for (const key in outputs) {
              console.log(`${key} -> ${outputs[key]}`)
            }
      - run: echo '${{ toJSON(needs.do-output.outputs) }}' | jq .

Discussion