Skip to content
Latchkey

GitHub Actions の GITHUB_ENV ファイルとは?

GITHUB_ENV はファイルを指します。そこに NAME=value を書き込むと、ジョブ内の以降のすべてのステップに向けて環境変数が設定されます。

あるステップで export した変数は次のステップでは失われます。各 run が新しいシェルだからです。GITHUB_ENV ファイルは、ジョブ内のステップ間で環境変数を引き継ぐための GitHub の仕組みです。

概要

ファイルパスを保持する環境変数です。そのファイルに NAME=value 行を追記すると、GitHub に対して以降の各ステップの環境でそれらの変数を設定するよう指示します。

Persisting a variable
steps:
  - run: echo "BUILD_ID=${{ github.run_id }}" >> "${GITHUB_ENV}"
  - run: echo "Building $BUILD_ID"

仕組み

ステップの終了後、GitHub は追記された行を読み取り、残りのステップに向けてそれらを環境変数として注入します。複数行の値には heredoc 形式の区切りを使います。

GITHUB_ENV と GITHUB_OUTPUT

GITHUB_ENV$NAME として読まれる環境変数を設定し、GITHUB_OUTPUTsteps コンテキストを通じて読まれるステップ output を設定します。シェル変数には env を、式のデータには output を使います。

重要な理由

これはステップ間で状態を共有するサポートされた方法であり、非推奨の ::set-env:: コマンドを置き換えます。これを知っておくと、"export した変数が消えた" という典型的な混乱を避けられます。

関連する概念

これはステップ output のための GITHUB_OUTPUT や、ジョブサマリーのための GITHUB_STEP_SUMMARY と並列で、いずれもステップが追記する特別なファイルです。

重要なポイント

  • GITHUB_ENV は env var を設定するためのファイルパスです。
  • 追記した NAME=value 行は以降のステップに引き継がれます。
  • 非推奨の ::set-env:: コマンドを置き換えます。

関連ガイド