🤝

GitHub Actions の「GITHUB_ENV」は、環境変数を設定したstepでは参照不可

2023/02/12に公開

stepであればすべて$GITHUB_ENVを利用できると思っていたのでメモです。

はじめに

GitHub Actionsでは、$GITHUB_ENVにキーバリュー形式で環境変数を設定することにより、それを参照することができます。
https://docs.github.com/ja/actions/using-workflows/workflow-commands-for-github-actions#setting-an-environment-variable

では参照できるのは誰なのか?
以下のように記載があります。後続のstepですね。

環境変数を作成または更新するステップは、新しい値にアクセスできませんが、ジョブにおける後続のすべてのステップはアクセスできます。

記載に従うと環境変数を設定したstepからはアクセスできないということです。
書いてあることまんまなのですが、試してみました。

後続のstepから参照するパターン

コード

ドキュメントの例をパクります

test.yaml
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Set the value
        id: step_one
        run: |
          echo "action_state=yellow" >> $GITHUB_ENV
      - name: Use the value
        id: step_two
        run: |
          echo "${{ env.action_state }}"

結果

問題なく出力されます。

同じstepから参照するパターン

step_oneの中から参照してみます。

コード

test.yaml
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Set the value
        id: step_one
        run: |
          echo "action_state=yellow" >> $GITHUB_ENV
          echo "${{ env.action_state }}"

結果

ワークフローは成功しますが、出力はされませんでした。
echoで出力しようとしていますが、空になっているみたいですね。

まとめ

環境変数を設定したstepからGITHUB_ENVを参照することはできませんでした。
runでスクリプトをまとめて実行していると、ここでひっかかるかもしれません。
可能なら役割ごとにstepを分けるのがいいですね。

Discussion