前ステップの値を参照する

後ステップで参照するための設定

参照されるステップは以下のようにする。

  • 後続のステップから参照するためにidをつける。
  • 変数名=値echo して $GITHUB_OUTPUT に出力する

例として以下のように記述する。

jobs:
  test-job:
    - name: setup vars
      id: setup-vars
      run: |
        echo "foo=FOO" >> $GITHUB_OUTPUT
        echo "bar=BAR" >> $GITHUB_OUTPUT
        TODAY=$(date +"%Y-%m-%d")
        echo "baz=${TODAY}" >> $GITHUB_OUTPUT        

上記のように変数=値は複数指定できる。

前ステップの値を参照するための設定

参照する側は ${{ steps.ステップのid.outputs.変数名 }} で参照できる。

例として上記のステップの値を参照する場合は以下のように記述する。
上記ではidsetup-varsとしたので${{ steps.setup-vars.outputs.変数名 }}で参照できる。

      ...
      - name: echo vars
        run: |
          echo ${{ steps.setup-vars.outputs.foo }}
          echo ${{ steps.setup-vars.outputs.bar }}
          echo ${{ steps.setup-vars.outputs.baz }}          

全体像

name: test

on:
  workflow_dispatch:
  push:
    branches:
      - main

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: setup vars
        id: setup-vars
        run: |
          echo "foo=FOO" >> $GITHUB_OUTPUT
          echo "bar=BAR" >> $GITHUB_OUTPUT
          TODAY=$(date +"%Y-%m-%d")
          echo "baz=${TODAY}" >> $GITHUB_OUTPUT          
      - name: echo vars
        run: |
          echo ${{ steps.setup-vars.outputs.foo }}
          echo ${{ steps.setup-vars.outputs.bar }}
          echo ${{ steps.setup-vars.outputs.baz }}          

古い記述方法

以下のように::set-outputを使った方法でも記述できる。
ただし2023年6月1日以降廃止になるので注意。

GitHub Actions: Deprecating save-state and set-output commands
- name: setup vars
  id: setup-vars
  run: |
    echo "::set-output name=foo::FOO"
    echo "::set-output name=bar::BAR"