ノート: GitHub Actionsは、GitHub Enterprise Server 2.22で限定ベータとして利用可能でした。 ベータは終了しました。 GitHub Actionsは、GitHub Enterprise Server 3.0以降で一般に利用可能になりました。 詳しい情報については、GitHub Enterprise Server 3.0 のリリースノートを参照してください。
- GitHub Enterprise Server 3.0以降へのアップグレードに関する詳しい情報については「GitHub Enterprise Serverのアップグレード」を参照してください。
- アップグレード後のGitHub Actionsの設定に関する詳しい情報については、GitHub Enterprise Server 3.0のドキュメンテーションを参照してください。
ノート: GitHubホストランナーは、現在GitHub Enterprise Serverでサポートされていません。 GitHubパブリックロードマップで、計画されている将来のサポートに関する詳しい情報を見ることができます。
環境変数について
GitHubは、ワークフローの実行におけるどのステップでも使用できる、デフォルトの環境変数を設定します。 環境変数では、大文字小文字は区別されます。 アクションあるいはステップ内で実行されるコマンドは、環境変数を作成、読み取り、変更することができます。
カスタムの環境変数を設定するには、ワークフローファイル中でその変数を指定しなければなりません。 jobs.<job_id>.steps[*].env
、jobs.<job_id>.env
、env
といったキーワードを使って、ステップ、ジョブ、あるいはワークフロー全体の環境変数を定義できます。 詳しい情報については、「GitHubのワークフロー構文」を参照してください。
jobs:
weekday_job:
runs-on: ubuntu-latest
env:
DAY_OF_WEEK: Mon
steps:
- name: "Hello world when it's Monday"
if: ${{ env.DAY_OF_WEEK == 'Mon' }}
run: echo "Hello $FIRST_NAME $middle_name $Last_Name, today is Monday!"
env:
FIRST_NAME: Mona
middle_name: The
Last_Name: Octocat
環境変数の値をワークフローファイル内で使うには、env
コンテキストを使わなければなりません。 環境変数の値をランナー内で使いたいなら、ランナーのオペレーティングシステムで環境変数を読む通常の方法が使えます。
ワークフローファイルのrun
キーを使って環境変数をランナーのオペレーティングシステム内から読む場合(上の例のように)、ジョブがランナーに送られた後に変数はランナーのオペレーティングシステム内で置き換えられます。 ワークフローファイルの他の部分では、環境変数を読むためにenv
コンテキストを使わなければなりません。これは、ワークフローのキー(if
など)で、ワークフローがランナーに送られる前に変数が置き換えられなければならないためです。
You can also use the set-env
workflow command to set an environment variable that the following steps in a job can use. The set-env
command can be used directly by an action or as a shell command in a workflow file using the run
keyword. 詳しい情報については「GitHub Actionsのワークフローコマンド」を参照してください。
デフォルトの環境変数
アクションでは、ファイルシステムにアクセスするとき、ハードコードされたファイルパスを使うのではなく環境変数を使用することを強くお勧めします。 GitHubは、すべてのランナー環境でアクションが使用する環境変数を設定します。
環境変数 | 説明 |
---|---|
CI | 常にtrue に設定されます。 |
GITHUB_WORKFLOW | ワークフローの名前。 |
GITHUB_RUN_ID | リポジトリ内でユニークな各実行に対する番号。 この番号は、ワークフローの実行をやり直しても変化しません、 |
GITHUB_RUN_NUMBER | リポジトリ内の特定のワークフローの各実行に対するユニークな番号。 この番号は、ワークフローの最初の実行時に1で始まり、新たな実行ごとにインクリメントされます。 この番号は、ワークフローの実行をやり直しても変化しません、 |
GITHUB_JOB | 現在のジョブの job_id。 |
GITHUB_ACTION | アクションの一意の識別子 (id )。 |
GITHUB_ACTION_PATH | アクションが置かれているパス。 このパスを使用して、アクションと同じリポジトリにあるファイルにアクセスできます。 This variable is only supported in composite actions. |
GITHUB_ACTIONS | GitHub Actionsがワークフローを実行しているときは常にtrue に設定されます。 この変数は、テストがローカルで実行されているときと、GitHub Actionsによって実行されているときを区別するために利用できます。 |
GITHUB_ACTOR | ワークフローを開始するユーザまたはアプリの名前。 octocat などです。 |
GITHUB_REPOSITORY | 所有者およびリポジトリの名前。 octocat/Hello-World などです。 |
GITHUB_EVENT_NAME | ワークフローをトリガーしたwebhookイベントの名前。 |
GITHUB_EVENT_PATH | 完了したwebhookイベントペイロードのファイルのパス。 /github/workflow/event.json などです。 |
GITHUB_WORKSPACE | The GitHub workspace directory path, initially empty. たとえば、/home/runner/work/my-repo-name/my-repo-name となります。 The actions/checkout action will check out files, by default a copy of your repository, within this directory. |
GITHUB_SHA | ワークフローをトリガーしたコミットSHA。 たとえば、ffac537e6cbbf934b08745a378932722df287a53 です。 |
GITHUB_REF | ワークフローをトリガーしたブランチまたはタグref。 たとえば、refs/heads/feature-branch-1 です。 イベントタイプのブランチもタグも利用できない場合、変数は存在しません。 |
GITHUB_HEAD_REF | Pull Requestのイベントに対してのみ設定されます。 headブランチの名前です。 |
GITHUB_BASE_REF | Pull Requestのイベントに対してのみ設定されます。 ベースブランチの名前です。 |
GITHUB_SERVER_URL | GitHub Enterprise Server サーバーの URL を返します。 For example: https://[hostname] . |
GITHUB_API_URL | API URL を返します。 For example: http(s)://[hostname]/api/v3 . |
GITHUB_GRAPHQL_URL | グラフ QL API の URL を返します。 For example: http(s)://[hostname]/api/graphql . |
RUNNER_NAME | The name of the runner executing the job. |
RUNNER_OS | ジョブを実行しているランナーのオペレーティングシステム。 取り得る値はLinux 、Windows 、macOS のいずれか。 |
RUNNER_TEMP | ランナー上の一時ディレクトリへのパス。 このディレクトリは、各ジョブの開始及び終了時点で空になります。 ランナーのユーザアカウントが削除する権限を持っていない場合、ファイルは削除されないことに注意してください。 |
RUNNER_TOOL_CACHE | GitHubホストランナーにプレインストールされているツールを含むディレクトリへのパス。 詳しい情報については、「GitHub ホストランナーの仕様」を参照してください。 |
ノート: ワークフローの実行のURLをジョブの中から使う必要がある場合は、$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID
というようにこれらの環境変数を組み合わせることができます。
デフォルトの環境変数を使う場合とコンテキストを使う場合の判断
GitHub Actionsは、コンテキストと呼ばれる変数の集合と、デフォルトの環境変数と呼ばれる同様の変数の集合を含みます。 これらの変数は、ワークフロー中の様々な場所で利用されることを意図したものです。
- デフォルトの環境変数: これらの変数は、ジョブを実行しているランナー上にのみ存在します。 詳しい情報については、「デフォルトの環境変数」を参照してください。
- コンテキスト: ほとんどのコンテキストはワークフローの任意の場所で利用できます。これは、デフォルトの環境変数が利用できない場所も含みます。 たとえば、式の付いたコンテキストを使って、ジョブが実行のためにランナーにまわされる前に初期の処理を行うことができます。これによって、ステップを実行すべきかを判断するために条件の
if
キーワード付きのコンテキストが利用できるようになります。 ジョブが実行されると、runner.os
といったように、コンテキスト変数をジョブを実行しているランナーから取り出すこともできます。 ワークフロー中で様々なコンテキストが利用できる場所の詳細については「コンテキストが利用できるところ」を参照してください。
以下の例は、様々な種類の環境変数をジョブの中で合わせて利用できることを示しています。
name: CI
on: push
jobs:
prod-check:
if: ${{ github.ref == 'refs/heads/main' }}
runs-on: ubuntu-latest
steps:
- run: echo "Deploying to production server on branch $GITHUB_REF"
この例では、if
文がgithub.ref
コンテキストをチェックして現在のブランチ名を判断しています。その名前がrefs/heads/main
であれば、以降のステップが実行されます。 このif
チェックがGitHub Actionsで処理されたなら、その結果がtrue
の場合にのみジョブがランナーに送信されます。 ジョブがランナーに送信されると、ステップが実行され、環境変数の$GITHUB_REF
をランナーから参照します。
環境変数の命名規則
カスタム環境変数を設定する場合、接頭辞の GITHUB_
が付いた上記のデフォルトの環境変数名を使用することはできません。 これらのデフォルトの環境変数のいずれかの値をオーバーライドしようとすると、割り当ては無視されます。
ファイルシステム上の場所を指すように設定した新しい環境変数がある場合は、_PATH
サフィックスを指定する必要があります。 デフォルトの変数HOME
とGITHUB_WORKSPACE
は、「home」および「workspace」という言葉で最初から場所であることがわかっているため、この規則の例外です。