ドキュメントには頻繁に更新が加えられ、その都度公開されています。本ページの翻訳はまだ未完成な部分があることをご了承ください。最新の情報については、英語のドキュメンテーションをご参照ください。本ページの翻訳に問題がある場合はこちらまでご連絡ください。

GitHub Actionsの仮想環境

GitHubは、ホストされた仮想マシンを使用してワークフローを実行します。 仮想マシンには、GitHub Actionsで使用できるツール、パッケージ、および設定の環境が含まれています。

GitHub Actionsは現在、限定パブリックベータとして利用可能で、変更となる可能性があります。ベータ期間中は、高価なワークフローやコンテンツにこの機能を利用することは避けてください。

詳細は「GitHub Actionsについて」(/articles/about-github-actions) を参照してください。

ここには以下の内容があります:

仮想環境について

The GitHub Actions virtual environments are hosted on virtual machines in Microsoft Azure with the GitHub Actions runner installed. The GitHub Actions runner is a fork of the Azure Pipelines Agent.

GitHubにホストされたマシンを使用すると、マシンのメンテナンスとアップグレードが自動的に行われます。 ワークフローは、仮想マシンで直接実行することも、Dockerコンテナで実行することもできます。

GitHubは、Linux、macOS、およびWindows環境の仮想マシンをホストします。 ワークフローの各ジョブは、仮想環境の新しいインスタンスで実行されます。 ジョブ実行のステップはすべて、仮想環境の同じインスタンスで実行されるため、そのジョブのアクションはファイルシステムを使用して情報を共有します。

ワークフローのジョブごとに仮想環境を指定することが可能です。 各ジョブを異なる仮想環境で実行するように設定することも、すべてのジョブを同じ環境で実行するように設定することもできます。

サポートされている仮想環境

GitHubでは、複数の仮想環境が用意されています。 For a list of supported software, tools, and packages in each virtual environment, see "Software in virtual environments for GitHub Actions."

仮想環境 YAMLのワークフローラベル
Windows Server 2019 windows-latest or windows-2019
Windows Server 2016 R2 windows-2016
Ubuntu 18.04 ubuntu-latestまたはubuntu-18.04
Ubuntu 16.04 ubuntu-16.04
macOS X Mojave 10.14 macOS-latestまたはmacOS-10.14

GitHubにホストされているマシン上のファイルシステム

GitHubは使用するアクションに対してディレクトリを作成します。 Dockerコンテナで実行されるアクションには、 /githubパスの下に静的なディレクトリがあります。 JavaScriptおよびシェルスクリプトが実行される仮想マシン上のGitHub固有のパスは、静的ではありません。 GitHubには、GitHub Actionsによって使用されるhomeworkspace、およびworkflowディレクトリのファイルパスの構築に使用できる環境変数が用意されています。 各アクションに対してGitHubが作成する環境変数のリストについては、「デフォルトの環境変数」を参照してください。

Dockerコンテナのファイルシステム

Dockerコンテナでファイルパスを構築するには、デフォルトの環境変数を使用することを強くお勧めします。

GitHubは、/githubパス接頭辞を予約し、アクションのために3つのディレクトリを作成します。

環境変数

GitHub sets default environment variables available to every step in a workflow run. Additional environment variables are set in the workflow file. アクションは、環境変数を作成、読み取り、変更することができます。

You can define environment variables for a step in a workflow file using the jobs.<job_id>.steps.env keyword. For more information, see "[Workflow syntax for

GitHub ](/articles/workflow-syntax-for-github-actions/#jobsjob_idstepsenv)."

GitHub converts environment variables names to upper case. For example, if you set the variables first_name, middle_name, and last_name for a step in your workflow, you could read the FIRST_NAME, MIDDLE_NAME, and LAST_NAME environment variables.

steps:
- name: Hello world
  run: echo Hello world ${FIRST_NAME} ${MIDDLE_NAME} ${LAST_NAME}!
  env:
    first_name: Mona
    middle_name: The
    last_name: Octocat

デフォルトの環境変数

アクションでは、ファイルシステムにアクセスするとき、ハードコードされたファイルパスではなく環境変数を使用することを強くお勧めします。 GitHubは、すべての環境変数でアクションが使用する環境変数を設定します。

環境変数 説明
HOME ユーザーデータの格納に使用されるGitHubホームディレクトリのパス。 たとえば、/github/homeです。
GITHUB_WORKFLOW ワークフローの名前。
GITHUB_ACTION アクションの名前。
GITHUB_ACTOR ワークフローを開始するユーザーまたはアプリの名前。 octocatなどです。
GITHUB_REPOSITORY 所有者およびリポジトリの名前。 octocat/Hello-Worldなどです。
GITHUB_EVENT_NAME ワークフローをトリガーしたwebhookイベントの名前。
GITHUB_EVENT_PATH 完了したwebhookイベントペイロードのファイルのパス。 /github/workflow/event.jsonなどです。
GITHUB_WORKSPACE GitHubワークスペースディレクトリのパス。 ワークスペースディレクトリには、リポジトリのコピーを含むサブディレクトリがあります。 たとえば、/github/workspaceです。
GITHUB_SHA ワークフローをトリガーしたコミットSHA。 たとえば、ffac537e6cbbf934b08745a378932722df287a53です。
GITHUB_REF ワークフローをトリガーしたブランチまたはタグref。 たとえば、refs/heads/feature-branch-1です。 イベントタイプのブランチもタグも利用できない場合、変数は存在しません。
GITHUB_HEAD_REF Only set for forked repositories. The branch of the head repository.
GITHUB_BASE_REF Only set for forked repositories. The branch of the base repository.

命名規則

ファイルシステム上の場所にそのポイントを設定した新しい環境変数がある場合は、_PATH接尾辞を指定する必要があります。 デフォルトの変数HOMEGITHUB_WORKSPACEは、「home」および「workspace」という言葉で最初から場所がわかっているため、この規則の例外です。

メモ: GitHubでは、GITHUB_という環境変数接頭辞は、GitHubが内部で使用するために予約されています。 GITHUB_接頭辞を使用して環境変数またはシークレットを設定すると、エラーになります。

シークレット (暗号化された変数) の作成と使用

シークレットとは、暗号化された環境変数のことです。リポジトリに作成され、GitHub Actionsによってのみ使用されます。 シークレットは、ワークフローファイルにそのシークレットを含むアクションで使用できます。

名前に空白を含めることはできません。

  1. GitHub で、リポジトリのメインページへ移動します。

  2. リポジトリ名の下で [Settings] をクリックします。

    リポジトリの設定ボタン

  3. 左サイドバーで [Secrets] をクリックします。

  4. [Name] 入力ボックスに、シークレットの名前を入力します。

  5. シークレットの値を入力します。

  6. [Add secret] をクリックします。

To pass a secret to an action, set the secret as an input or environment variable in your workflow. Review the action's README file to learn about which inputs and environment variables the action expects. For more information, see "Workflow syntax for GitHub Actions."

With the exception of GITHUB_TOKEN, secrets are not passed to the runner when a workflow is triggered from a forked repository.

steps:

- name: Hello world action
  with: # Set the secret as an input
    super_secret: ${{ secrets.SuperSecret }}
  env: # Or as an environment variable
    super_secret: ${{ secrets.SuperSecret }}

GITHUB_TOKENシークレット

GITHUB_TOKENシークレットは、リポジトリにスコープされたGitHub Appインストールトークンです。 GitHubは、デフォルトでGITHUB_TOKENシークレットを自動的に作成しますが、アクションでそれを使用するには、ワークフローファイルに追加する必要があります。 GITHUB_TOKENシークレットを使用すると、認証されたGitHub APIコールを、アクションに代わって実行することができます。

ワークフローファイルで、GITHUB_TOKENシークレットにアクセスする必要があるアクションごとに環境変数を作成してください。

steps:

- name: My first action
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: My second action
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
トークンの権限

GitHub Appsが各権限でアクセできるAPIエンドポイントについては、GitHub 開発者ドキュメンテーションで「GitHub Appの権限」を参照してください。

権限 アクセスタイプ Access by forked repos
チェック 読み取り/書き込み 読み取り
コンテンツ 読み取り/書き込み 読み取り
デプロイメント 読み取り/書き込み 読み取り
Issue 読み取り/書き込み 読み取り
メタデータ 読み取り 読み取り
パッケージ 読み取り/書き込み 読み取り
ページ 読み取り/書き込み 読み取り
プルリクエスト 読み取り/書き込み 読み取り
リポジトリフック 読み取り/書き込み 読み取り
リポジトリプロジェクト 読み取り/書き込み 読み取り
ステータス 読み取り/書き込み 読み取り
脆弱性アラート 読み取り 読み取り

終了コードとステータス

終了コードを利用すると、アクションのステータスを確認することができます。 GitHub uses the exit code to set the GitHub Action's check run status, which can be success or failure.

終了ステータス チェック実行ステータス 説明
0 success アクションが正常に完了し、それに依存する他のタスクを開始できます。
Nonzero value failure その他の終了コードは、アクションの失敗を表します。 アクションが失敗すると、同時に実行されていたアクションはすべてキャンセルされ、今後のアクションはスキップされます。 チェック実行とチェックスイートはどちらも、failureステータスになります。

Checks APIに関する詳しい情報については、GitHub 開発者ドキュメンテーションで「Checks」を参照してください。

担当者にお尋ねください

探しているものが見つからなかったでしょうか?

弊社にお問い合わせください