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_OUTPUT は steps コンテキストを通じて読まれるステップ output を設定します。シェル変数には env を、式のデータには output を使います。
重要な理由
これはステップ間で状態を共有するサポートされた方法であり、非推奨の ::set-env:: コマンドを置き換えます。これを知っておくと、"export した変数が消えた" という典型的な混乱を避けられます。
関連する概念
これはステップ output のための GITHUB_OUTPUT や、ジョブサマリーのための GITHUB_STEP_SUMMARY と並列で、いずれもステップが追記する特別なファイルです。
重要なポイント
GITHUB_ENVは env var を設定するためのファイルパスです。- 追記した
NAME=value行は以降のステップに引き継がれます。 - 非推奨の
::set-env::コマンドを置き換えます。
関連ガイド
What Is a Step Output in GitHub Actions?A step output is a named value a step writes to GITHUB_OUTPUT so later steps in the same job can read it via…
What Is a Job Summary in GitHub Actions?A job summary is custom Markdown a step writes to GITHUB_STEP_SUMMARY, rendered on the run page to surface re…
What Is a Step in GitHub Actions?A step in GitHub Actions is a single task in a job. It either runs a shell command with run or invokes a reus…
What Is a Context in GitHub Actions?A context in GitHub Actions is a structured object of run data, like github, env, and secrets, that you read…