Skip to main content
We publish frequent updates to our documentation, and translation of this page may still be in progress. For the most current information, please visit the English documentation.

コンテキスト

ワークフローとアクションでコンテキスト情報にアクセスできます。

コンテキストについて

コンテキストは、ワークフローの実行、変数、ランナーの環境、ジョブ、ステップに関する情報にアクセスする方法です。 各コンテキストは、プロパティを含むオブジェクトであり、文字列またはその他のオブジェクトにすることができます。

コンテキスト、オブジェクト、プロパティは、ワークフローの実行条件によって大きく異なります。 たとえば、matrix コンテキストはマトリックス内のジョブに対してのみ設定されます。

式構文を使用してコンテキストにアクセスできます。 詳しくは、「」を参照してください。

${{ <context> }}

警告: ワークフローとアクションを作成するときは、コードが攻撃者からの信頼されていない入力を実行する可能性があるかどうかを常に考慮する必要があります。 攻撃者が悪意あるコンテンツを挿入してくるかもしれないので、特定のコンテキストは信頼できない入力として扱うべきです。 詳しくは、「」を参照してください。

コンテキスト名説明
githubobjectワークフロー実行に関する情報。 詳しくは、「github コンテキスト」を参照してください。
envobjectワークフロー、ジョブ、ステップで設定された変数が含まれます。 詳しくは、「env コンテキスト」を参照してください。

式の一部として、2 つの構文のいずれかを使用してコンテキスト情報にアクセスできます。

  • インデックス構文: github['sha']
  • プロパティ逆参照構文: github.sha

プロパティ逆参照構文を使うには、プロパティ名が文字または _ で始まっていて、英数字、-、または _ のみを含んでいる必要があります。

存在しないプロパティを逆参照しようとすると、空の文字列として評価されます。

コンテキストを使用する場合の判断

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 変数が参照されます。

コンテキストの可用性

ワークフローの実行を通して、さまざまなコンテキストを使用できます。 たとえば、secrets コンテキストはジョブ内の特定の場所でのみ使用できます。

また、一部の関数は特定の場所でのみ使用できます。 たとえば、hashFiles 関数はどこにも使用できません。

次の表は、ワークフロー内で各コンテキストと特殊関数を使用できる場所を示しています。 以下に一覧表示されている場合を除き、任意の場所で関数を使用できます。

| ワークフロー キー | Context | 特殊な関数 | | ---- | ------- | ----------------- | | run-name | github, inputs, vars | | | concurrency | github, inputs, vars | | | env | github, secrets, inputs, vars | | | jobs.<job_id>.concurrency | github, needs, strategy, matrix, inputs, vars | | | jobs.<job_id>.container | github, needs, strategy, matrix, env, vars, secrets, inputs | | | jobs.<job_id>.container.credentials | github, needs, strategy, matrix, env, vars, secrets, inputs | | | jobs.<job_id>.container.env.<env_id> | github, needs, strategy, matrix, job, runner, env, vars, secrets, inputs | | | jobs.<job_id>.continue-on-error | github, needs, strategy, vars, matrix, inputs | | | jobs.<job_id>.defaults.run | github, needs, strategy, matrix, env, vars, inputs | | | jobs.<job_id>.env | github, needs, strategy, matrix, vars, secrets, inputs | | | jobs.<job_id>.environment | github, needs, strategy, matrix, vars, inputs | | | jobs.<job_id>.environment.url | github, needs, strategy, matrix, job, runner, env, vars, steps, inputs | | | jobs.<job_id>.if | github, needs, vars, inputs | always, cancelled, success, failure | | jobs.<job_id>.name | github, needs, strategy, matrix, vars, inputs | | | jobs.<job_id>.outputs.<output_id> | github, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputs | | | jobs.<job_id>.runs-on | github, needs, strategy, matrix, vars, inputs | | | jobs.<job_id>.secrets.<secrets_id> | github, needs, strategy, matrix, secrets, inputs, vars | | | jobs.<job_id>.services | github, needs, strategy, matrix, vars, inputs | | | jobs.<job_id>.services.<service_id>.credentials | github, needs, strategy, matrix, env, vars, secrets, inputs | | | jobs.<job_id>.services.<service_id>.env.<env_id> | github, needs, strategy, matrix, job, runner, env, vars, secrets, inputs | | | jobs.<job_id>.steps.continue-on-error | github, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputs | hashFiles | | jobs.<job_id>.steps.env | github, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputs | hashFiles | | jobs.<job_id>.steps.if | github, needs, strategy, matrix, job, runner, env, vars, steps, inputs | always, cancelled, success, failure, hashFiles | | jobs.<job_id>.steps.name | github, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputs | hashFiles | | jobs.<job_id>.steps.run | github, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputs | hashFiles | | jobs.<job_id>.steps.timeout-minutes | github, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputs | hashFiles | | jobs.<job_id>.steps.with | github, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputs | hashFiles | | jobs.<job_id>.steps.working-directory | github, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputs | hashFiles | | jobs.<job_id>.strategy | github, needs, vars, inputs | | | jobs.<job_id>.timeout-minutes | github, needs, strategy, matrix, vars, inputs | | | jobs.<job_id>.with.<with_id> | github, needs, strategy, matrix, inputs, vars | | | on.workflow_call.inputs.<inputs_id>.default | github, inputs, vars | | | on.workflow_call.outputs.<output_id>.value | github, jobs, vars, inputs | |

例: ログへのコンテキスト情報の出力

デバッグのためにコンテキストの内容をログに出力できます。 JSON オブジェクトをログに整形出力するには、toJSON 関数が必要です。

警告: github コンテキスト全体を使う場合、github.token などの機密情報が含まれることに注意してください。 GitHubは、シークレットがコンソールに出力される際にはマスクしますが、コンテキストをエクスポートしたりプリントしたりするときには注意が必要です。

YAML
name: Context testing
on: push

jobs:
  dump_contexts_to_log:
    runs-on: ubuntu-latest
    steps:
      - name: Dump GitHub context
        id: github_context_step
        run: echo '${{ toJSON(github) }}'
      - name: Dump job context
        run: echo '${{ toJSON(job) }}'
      - name: Dump steps context
        run: echo '${{ toJSON(steps) }}'
      - name: Dump runner context
        run: echo '${{ toJSON(runner) }}'
      - name: Dump strategy context
        run: echo '${{ toJSON(strategy) }}'
      - name: Dump matrix context
        run: echo '${{ toJSON(matrix) }}'

github コンテキスト

github コンテキストには、ワークフローの実行とその実行をトリガーしたイベントの情報が含まれます。 ほとんどの github コンテキスト データは環境変数で読み取ることができます。 環境変数について詳しくは、「変数」をご覧ください。

警告: github コンテキスト全体を使う場合、github.token などの機密情報が含まれることに注意してください。 GitHubは、シークレットがコンソールに出力される際にはマスクしますが、コンテキストをエクスポートしたりプリントしたりするときには注意が必要です。

警告: ワークフローとアクションを作成するときは、コードが攻撃者からの信頼されていない入力を実行する可能性があるかどうかを常に考慮する必要があります。 攻撃者が悪意あるコンテンツを挿入してくるかもしれないので、特定のコンテキストは信頼できない入力として扱うべきです。 詳しくは、「」を参照してください。

プロパティ名Type説明
githubobjectワークフローのあらゆるジョブやステップにおいて使用できる最上位のコンテキスト。 このオブジェクトには、以下に一覧表示されているすべてのプロパティが含まれています。
github.actionstring現在実行中のアクションの名前、またはステップの id。 GitHub では特殊文字を削除し、現在のステップで id なしでスクリプトを実行するときに __run という名前を使用します。 同じジョブで同じアクションを複数回使う場合、名前には、前にアンダースコアが付いたシーケンス番号で構成されるサフィックスが含まれます。 たとえば、実行する最初のスクリプトの名前は __run で、2 番目のスクリプトの名前は __run_2 となります。 同様に、actions/checkout の 2 番目の呼び出しは actionscheckout2 になります。
github.action_pathstringアクションが置かれているパス。 このプロパティは、複合アクションでのみサポートされます。 このパスを使用して、アクションと同じリポジトリにあるファイルにアクセスできます。たとえば、ディレクトリをパス cd ${{ github.action_path }} に変更します。
github.action_refstringアクションを実行するステップの場合、これは実行中のアクションの参照です。 たとえば、v2 のようにします。
github.action_repositorystringアクションを実行するステップの場合、これはアクションの所有者とリポジトリの名前です。 たとえば、actions/checkout のようにします。
github.action_statusstring複合アクションの場合は、複合アクションの現在の結果。
github.actorstringワークフローの実行を最初にトリガーしたユーザーのユーザー名。 ワークフローの実行が再実行である場合、この値は github.triggering_actor と異なることがあります。 ワークフローのすべての再実行では、再実行を開始したアクター (github.triggering_actor) が異なる特権を持っている場合であっても、github.actor の特権が使われます。

github コンテキストの内容の例

次のコンテキスト例は、push イベントによってトリガーされるワークフロー実行のものです。 この例の event オブジェクトは、push Webhook ペイロードの内容と同じであるため、切り捨てられています。

注: このコンテキストは、一例です。 コンテキストの内容は、実行中のワークフローによって異なります。 コンテキスト、オブジェクト、プロパティは、ワークフローの実行条件によって大きく異なります。

{
  "token": "***",
  "job": "dump_contexts_to_log",
  "ref": "refs/heads/my_branch",
  "sha": "c27d339ee6075c1f744c5d4b200f7901aad2c369",
  "repository": "octocat/hello-world",
  "repository_owner": "octocat",
  "repositoryUrl": "git://github.com/octocat/hello-world.git",
  "run_id": "1536140711",
  "run_number": "314",
  "retention_days": "90",
  "run_attempt": "1",
  "actor": "octocat",
  "workflow": "Context testing",
  "head_ref": "",
  "base_ref": "",
  "event_name": "push",
  "event": {
    ...
  },
  "server_url": "https://github.com",
  "api_url": "https://api.github.com",
  "graphql_url": "https://api.github.com/graphql",
  "ref_name": "my_branch",
  "ref_protected": false,
  "ref_type": "branch",
  "secret_source": "Actions",
  "workspace": "/home/runner/work/hello-world/hello-world",
  "action": "github_step",
  "event_path": "/home/runner/work/_temp/_github_workflow/event.json",
  "action_repository": "",
  "action_ref": "",
  "path": "/home/runner/work/_temp/_runner_file_commands/add_path_b037e7b5-1c88-48e2-bf78-eaaab5e02602",
  "env": "/home/runner/work/_temp/_runner_file_commands/set_env_b037e7b5-1c88-48e2-bf78-eaaab5e02602"
}

github コンテキストの使用例

このワークフロー例では、ワークフロー実行が github.event_name イベントによってトリガーされた場合にのみ、pull_request コンテキストを使用してジョブを実行します。

YAML
name: Run CI
on: [push, pull_request]

jobs:
  normal_ci:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Run normal CI
        run: ./run-tests

  pull_request_ci:
    runs-on: ubuntu-latest
    if: ${{ github.event_name == 'pull_request' }}
    steps:
      - uses: actions/checkout@v3
      - name: Run PR CI
        run: ./run-additional-pr-ci

env コンテキスト

env コンテキストには、ワークフロー、ジョブ、またはステップで設定された変数が含まれます。 ワークフローでの変数の設定について詳しくは、「GitHub Actions のワークフロー構文」をご覧ください。

env コンテキスト構文では、ワークフロー ファイルで変数の値を使うことができます。 env コンテキストは、ステップ内の任意のキーの値で使用できます。ただし、iduses キーは除きます。 ステップの構文について詳しくは、「GitHub Actions のワークフロー構文」をご覧ください。

ランナー内で変数の値を使いたい場合は、そのランナーのオペレーティング システムでの通常の変数読み取り方法を使ってください。

プロパティ名Type説明
envobjectこのコンテキストは、ジョブのステップごとに異なります。 このコンテキストには、ジョブのあらゆるステップからアクセスできます。 このオブジェクトには、以下に一覧表示されているプロパティが含まれています。
env.<env_name>string特定の環境変数の値。

env コンテキストの内容の例

env コンテキストの内容は、変数名とその値へのマッピングです。 コンテキストの内容は、ワークフローの実行で使用される場所に応じて変わる場合があります。

{
  "first_name": "Mona",
  "super_duper_var": "totally_awesome"
}

env コンテキストの使用例

このワークフロー例では、ワークフロー、ジョブ、ステップ レベルで env コンテキストを構成する方法と、ステップでそのコンテキストを使用する方法を示します。

同じ名前で複数の環境変数が定義されている場合、GitHub では最も具体的な変数を使用します。 たとえば、ステップ中で定義された環境変数は、ジョブやワークフローの同じ名前の環境変数をステップの実行の間オーバーライドします。 ジョブで定義された環境変数は、そのジョブの実行の間はワークフローの同じ名前の変数をオーバーライドします。

YAML
name: Hi Mascot
on: push
env:
  mascot: Mona
  super_duper_var: totally_awesome

jobs:
  windows_job:
    runs-on: windows-latest
    steps:
      - run: echo 'Hi ${{ env.mascot }}'  # Hi Mona
      - run: echo 'Hi ${{ env.mascot }}'  # Hi Octocat
        env:
          mascot: Octocat
  linux_job:
    runs-on: ubuntu-latest
    env:
      mascot: Tux
    steps:
      - run: echo 'Hi ${{ env.mascot }}'  # Hi Tux

vars コンテキスト

注: GitHub Actions の構成変数はベータ版であり、変更される可能性があります。

vars コンテキストには、Organization レベル、リポジトリ レベル、環境レベルで設定されたカスタムの構成変数が含まれます。 複数のワークフローで使う構成変数の定義について詳しくは、「変数」をご覧ください。

vars コンテキストの内容の例

vars コンテキストの内容は、構成変数名とその値へのマッピングです。

{
  "mascot": "Mona"
}

vars コンテキストの使用例

このワークフロー例では、vars コンテキストを使って、リポジトリ レベル、環境レベル、または Organization レベルで設定された構成変数を自動的に使えるようにする方法を示しています。

構成変数が設定されていない場合、変数を参照するコンテキストの戻り値は空の文字列になります。

次の例は、ワークフロー全体で vars コンテキストと共に構成変数を使用する方法を示しています。 次の各構成変数は、リポジトリ、Organization、または環境レベルで定義されています。

YAML
on:
  workflow_dispatch:
env:
  # Setting an environment variable with the value of a configuration variable
  env_var: ${{ vars.ENV_CONTEXT_VAR }}

jobs:
  display-variables:
    name: ${{ vars.JOB_NAME }}
    # You can use configuration variables with the `vars` context for dynamic jobs
    if: ${{ vars.USE_VARIABLES == 'true' }}
    runs-on: ${{ vars.RUNNER }}
    environment: ${{ vars.ENVIRONMENT_STAGE }}
    steps:
    - name: Use variables
      run: |
        echo "repository variable : ${{ vars.REPOSITORY_VAR }}"
        echo "organization variable : ${{ vars.ORGANIZATION_VAR }}"
        echo "overridden variable : ${{ vars.OVERRIDE_VAR }}"
        echo "variable from shell environment : $env_var"

    - name: ${{ vars.HELLO_WORLD_STEP }}
      if: ${{ vars.HELLO_WORLD_ENABLED == 'true' }}
      uses: actions/hello-world-javascript-action@main
      with:
        who-to-greet: ${{ vars.GREET_NAME }}

job コンテキスト

job コンテキストには、現在実行中のジョブに関する情報が含まれます。

プロパティ名Type説明
jobobjectこのコンテキストは、実行しているジョブごとに異なります。 このコンテキストには、ジョブのあらゆるステップからアクセスできます。 このオブジェクトには、以下に一覧表示されているすべてのプロパティが含まれています。
job.containerobjectジョブのコンテナに関する情報。 コンテナーについて詳しくは、「GitHub Actions のワークフロー構文」をご覧ください。
job.container.idstringコンテナーの ID。
job.container.networkstringコンテナー ネットワークの ID。 ランナーは、コンテナ内のすべてのジョブに使用されるネットワークを作成します。
job.servicesobjectジョブのために作成されたサービスコンテナ。 サービス コンテナーについて詳しくは、「GitHub Actions のワークフロー構文」をご覧ください。
job.services.<service_id>.idstringサービス コンテナーの ID。
job.services.<service_id>.networkstringサービス コンテナー ネットワークの ID。 ランナーは、コンテナ内のすべてのジョブに使用されるネットワークを作成します。
job.services.<service_id>.portsobjectサービスコンテナの公開ポート。
job.statusstringジョブの現在の状態。 設定可能な値は、successfailure、または cancelled です。

job コンテキストの内容の例

この job コンテキストの例では、マップされたポートを持つ PostgreSQL サービス コンテナーを使用します。 ジョブで使用されるコンテナーまたはサービス コンテナーがない場合、job コンテキストには status プロパティのみが含まれます。

{
  "status": "success",
  "container": {
    "network": "github_network_53269bd575974817b43f4733536b200c"
  },
  "services": {
    "postgres": {
      "id": "60972d9aa486605e66b0dad4abb638dc3d9116f566579e418166eedb8abb9105",
      "ports": {
        "5432": "49153"
      },
      "network": "github_network_53269bd575974817b43f4733536b200c"
    }
  }
}

job コンテキストの使用例

このワークフロー例では、PostgreSQL サービス コンテナーを構成し、サービス コンテナー内のポート 5432 をホスト上でランダムに選ばれた使用可能なポートに自動的にマップします。 job コンテキストは、ホストで割り当てられた番号のポートにアクセスするために使用されます。

YAML
name: PostgreSQL Service Example
on: push
jobs:
  postgres-job:
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres
        env:
          POSTGRES_PASSWORD: postgres
        options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
        ports:
          # Maps TCP port 5432 in the service container to a randomly chosen available port on the host.
          - 5432

    steps:
      - uses: actions/checkout@v3
      - run: pg_isready -h localhost -p ${{ job.services.postgres.ports[5432] }}
      - run: ./run-tests

jobs コンテキスト

jobs コンテキストは、再利用可能なワークフローでのみ使うことができ、再利用可能なワークフローに出力を設定するためにのみ使うことができます。 詳しくは、「ワークフローの再利用」を参照してください。

プロパティ名Type説明
jobsobjectこれは、再利用可能なワークフローでのみ使うことができ、再利用可能なワークフローに出力を設定するためにのみ使うことができます。 このオブジェクトには、以下に一覧表示されているすべてのプロパティが含まれています。
jobs.<job_id>.resultstring再利用可能なワークフロー内のジョブの結果。 指定できる値は、successfailurecancelled、および skipped です。
jobs.<job_id>.outputsobject再利用可能なワークフロー内のジョブの出力セット。
jobs.<job_id>.outputs.<output_name>string再利用可能なワークフロー内のジョブの特定の出力値。

jobs コンテキストの内容の例

この jobs コンテキストの例には、再利用可能なワークフローの実行からのジョブの結果と出力が含まれています。

{
  "example_job": {
    "result": "success",
    "outputs": {
      "output1": "hello",
      "output2": "world"
    }
  }
}

jobs コンテキストの使用例

この再利用可能なワークフローの例では、jobs コンテキストを使って、再利用可能なワークフローの出力を設定します。 出力のフローが、ステップからジョブへ、その後 workflow_call トリガーへ向かっていることに注意してください。 詳しくは、「ワークフローの再利用」を参照してください。

YAML
name: Reusable workflow

on:
  workflow_call:
    # Map the workflow outputs to job outputs
    outputs:
      firstword:
        description: "The first output string"
        value: ${{ jobs.example_job.outputs.output1 }}
      secondword:
        description: "The second output string"
        value: ${{ jobs.example_job.outputs.output2 }}

jobs:
  example_job:
    name: Generate output
    runs-on: ubuntu-latest
    # Map the job outputs to step outputs
    outputs:
      output1: ${{ steps.step1.outputs.firstword }}
      output2: ${{ steps.step2.outputs.secondword }}
    steps:
      - id: step1
        run: echo "firstword=hello" >> $GITHUB_OUTPUT
      - id: step2
        run: echo "secondword=world" >> $GITHUB_OUTPUT

steps コンテキスト

steps コンテキストには、id が指定されていて、既に実行されている現在のジョブのステップに関する情報が含まれています。

プロパティ名Type説明
stepsobjectこのコンテキストは、ジョブのステップごとに異なります。 このコンテキストには、ジョブのあらゆるステップからアクセスできます。 このオブジェクトには、以下に一覧表示されているすべてのプロパティが含まれています。
steps.<step_id>.outputsobjectステップに定義された出力のセット。 詳しくは、「GitHub Actions のメタデータ構文」を参照してください。
steps.<step_id>.conclusionstringcontinue-on-error の適用後の完了したステップの結果。 指定できる値は、successfailurecancelled、および skipped です。 continue-on-error ステップが失敗した場合、outcomefailure になりますが、最終的な conclusionsuccess になります。
steps.<step_id>.outcomestringcontinue-on-error の適用前の完了したステップの結果。 指定できる値は、successfailurecancelled、および skipped です。 continue-on-error ステップが失敗した場合、outcomefailure になりますが、最終的な conclusionsuccess になります。
steps.<step_id>.outputs.<output_name>string特定の出力の値。

steps コンテキストの内容の例

この steps コンテキストの例は、id が指定された 2 つの前のステップを示しています。 最初のステップの idcheckout という名前で、2 番目は generate_number です。 generate_number ステップの出力は random_number という名前です。

{
  "checkout": {
    "outputs": {},
    "outcome": "success",
    "conclusion": "success"
  },
  "generate_number": {
    "outputs": {
      "random_number": "1"
    },
    "outcome": "success",
    "conclusion": "success"
  }
}

steps コンテキストの使用例

このワークフロー例では、1 つのステップで出力として乱数を生成し、後のステップでは steps コンテキストを使用してその出力の値を読み取ります。

YAML
name: Generate random failure
on: push
jobs:
  randomly-failing-job:
    runs-on: ubuntu-latest
    steps:
      - id: checkout
        uses: actions/checkout@v3
      - name: Generate 0 or 1
        id: generate_number
        run:  echo "random_number=$(($RANDOM % 2))" >> $GITHUB_OUTPUT
      - name: Pass or fail
        run: |
          if [[ ${{ steps.generate_number.outputs.random_number }} == 0 ]]; then exit 0; else exit 1; fi

runner コンテキスト

runner コンテキストには、現在のジョブを実行しているランナーに関する情報が含まれています。

プロパティ名Type説明
runnerobjectこのコンテキストは、実行しているジョブごとに異なります。 このオブジェクトには、以下に一覧表示されているすべてのプロパティが含まれています。
runner.namestringジョブを実行しているランナーの名前。
runner.osstringジョブを実行しているランナーのオペレーティングシステム。 設定可能な値は、LinuxWindows、または macOS です。
runner.archstringジョブを実行しているランナーのアーキテクチャ。 指定できる値は、X86X64ARM、および ARM64 です。
runner.tempstringランナー上の一時ディレクトリへのパス。 このディレクトリは、各ジョブの開始及び終了時点で空になります。 ランナーのユーザアカウントが削除する権限を持っていない場合、ファイルは削除されないことに注意してください。
runner.tool_cachestringGitHubホストランナーにプレインストールされているツールを含むディレクトリへのパス。 詳しくは、「GitHub ホステッド ランナーの概要」をご覧ください。
runner.debugstringこれは、デバッグ ログが有効になっている場合にのみ設定され、値は常に 1 です。 独自のジョブ手順で追加のデバッグまたは詳細ログを有効にするためのインジケーターとして役に立ちます。

runner コンテキストの内容の例

次のコンテキスト例は、Linux GitHub ホスト ランナーからのものです。

{
  "os": "Linux",
  "arch": "X64",
  "name": "GitHub Actions 2",
  "tool_cache": "/opt/hostedtoolcache",
  "temp": "/home/runner/work/_temp"
}

runner コンテキストの使用例

このワークフロー例では、runner コンテキストを使用して、ログを書き込む一時ディレクトリへのパスを設定し、ワークフローが失敗した場合は、それらのログを成果物としてアップロードします。

YAML
name: Build
on: push

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Build with logs
        run: |
          mkdir ${{ runner.temp }}/build_logs
          ./build.sh --log-path ${{ runner.temp }}/build_logs
      - name: Upload logs on fail
        if: ${{ failure() }}
        uses: actions/upload-artifact@v3
        with:
          name: Build failure logs
          path: ${{ runner.temp }}/build_logs

secrets コンテキスト

secrets コンテキストには、ワークフロー実行で使用できるシークレットの名前と値が含まれています。 セキュリティ上の理由から、複合アクションに secrets コンテキストは使用できません。 複合アクションにシークレットを渡すには、入力として明示的に行う必要があります。 シークレットについて詳しくは、「暗号化されたシークレット」をご覧ください。

GITHUB_TOKEN は、すべてのワークフロー実行に対して自動的に作成されるシークレットであり、常に secrets コンテキストに含まれます。 詳しくは、「Automatic token authentication」を参照してください。

警告: GitHub はログに出力されたシークレットを自動的に削除しますが、シークレットをログに出力することは意識的に避けなくてはなりません。

プロパティ名Type説明
secretsobjectこのコンテキストは、ワークフロー実行のジョブごとに同じです。 このコンテキストには、ジョブのあらゆるステップからアクセスできます。 このオブジェクトには、以下に一覧表示されているすべてのプロパティが含まれています。
secrets.GITHUB_TOKENstringワークフロー実行ごとに自動的に作成されたトークン。 詳しくは、「Automatic token authentication」を参照してください。
secrets.<secret_name>string特定のシークレットの値。

secrets コンテキストの内容の例

次の secrets コンテキストの内容の例は、自動 GITHUB_TOKEN と、ワークフロー実行で使用できる他の 2 つのシークレットを示しています。

{
  "github_token": "***",
  "NPM_TOKEN": "***",
  "SUPERSECRET": "***"
}

secrets コンテキストの使用例

次のワークフローの例では、repo-token 入力パラメーターの値として GITHUB_TOKEN を必要とするラベラー アクションを使用します。

YAML
name: Pull request labeler
on: [ pull_request_target ]

permissions:
  contents: read
  pull-requests: write

jobs:
  triage:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/labeler@v4
        with:
          repo-token: ${{ secrets.GITHUB_TOKEN }}

strategy コンテキスト

マトリックスを含むワークフローの場合、strategy コンテキストには現在のジョブのマトリックス実行戦略に関する情報が含まれます。

プロパティ名Type説明
strategyobjectこのコンテキストは、実行しているジョブごとに異なります。 このコンテキストには、ワークフロー内の任意のジョブまたはステップからアクセスできます。 このオブジェクトには、以下に一覧表示されているすべてのプロパティが含まれています。
strategy.fail-fastbooleantrue の場合、マトリックス内のジョブが失敗すると、進行中のすべてのジョブが取り消されます。 詳しくは、「GitHub Actions のワークフロー構文」を参照してください。
strategy.job-indexnumberマトリックス内の現在のジョブのインデックス。 注: この数値は 0 から始まる数値です。 マトリックス内の最初のジョブのインデックスは 0 です。
strategy.job-totalnumberマトリックス内のジョブの合計数。 注: この数値は 0 から始まる数値ではありません。 たとえば、4 つのジョブを含むマトリックスの場合、job-total の値は 4 になります。
strategy.max-parallelnumbermatrix ジョブ戦略を使用するときに、同時に実行できるジョブの最大数。 詳しくは、「GitHub Actions のワークフロー構文」を参照してください。

strategy コンテキストの内容の例

次の strategy コンテキストの内容の例は、4 つのジョブを含むマトリックスからのものであり、最終的なジョブから取得されたものです。 0 から始まる job-index 数値と、0 から始まらない job-total との違いに注意してください。

{
  "fail-fast": true,
  "job-index": 3,
  "job-total": 4,
  "max-parallel": 4
}

strategy コンテキストの使用例

このワークフロー例では strategy.job-index プロパティを使用して、マトリックス内の各ジョブのログ ファイルの一意の名前を設定します。

YAML
name: Test matrix
on: push

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        test-group: [1, 2]
        node: [14, 16]
    steps:
      - uses: actions/checkout@v3
      - run: npm test > test-job-${{ strategy.job-index }}.txt
      - name: Upload logs
        uses: actions/upload-artifact@v3
        with:
          name: Build log for job ${{ strategy.job-index }}
          path: test-job-${{ strategy.job-index }}.txt

matrix コンテキスト

マトリックスを含むワークフローの場合、matrix コンテキストには、現在のジョブに適用されるワークフロー ファイルで定義されているマトリックス プロパティが含まれます。 たとえば、osnode キーを使用してマトリックスを構成する場合、matrix コンテキスト オブジェクトには、現在のジョブで使用されている値を持つ osnode プロパティが含まれます。

matrix コンテキストには標準プロパティはなく、ワークフロー ファイルで定義されているもののみとなります。

プロパティ名Type説明
matrixobjectこのコンテキストは、マトリックス内のジョブに対してのみ使用でき、ワークフロー実行のジョブごとに変わります。 このコンテキストには、ワークフロー内の任意のジョブまたはステップからアクセスできます。 このオブジェクトには、以下に一覧表示されているプロパティが含まれています。
matrix.<property_name>stringマトリックス プロパティの値。

matrix コンテキストの内容の例

次の matrix コンテキストの内容の例は、ワークフローで定義された osnode マトリックス プロパティを持つマトリックス内のジョブからのものです。 そのジョブでは、ubuntu-latestOS と Node.js バージョン16のマトリックスの組み合わせが実行されています。

{
  "os": "ubuntu-latest",
  "node": 16
}

matrix コンテキストの使用例

このワークフロー例では、osnode キーを使用してマトリックスを作成します。 matrix.os プロパティを使って各ジョブのランナーの種類が設定され、matrix.node プロパティを使用して各ジョブの Node.js バージョンが設定されます。

YAML
name: Test matrix
on: push

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
        node: [14, 16]
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node }}
      - name: Install dependencies
        run: npm ci
      - name: Run tests
        run: npm test

needs コンテキスト

needs コンテキストには、現在のジョブの直接依存関係として定義されたすべてのジョブからの出力が含まれます。 これには、暗黙的な依存ジョブ (たとえば、依存ジョブの依存ジョブ) は含まれないことに注意してください。 ジョブの依存関係の定義については詳しくは、「GitHub Actions のワークフロー構文」をご覧ください。

プロパティ名Type説明
needsobjectこのコンテキストは、依存ジョブを持つワークフロー実行に対してのみ設定され、ワークフロー実行のジョブごとに変わります。 このコンテキストには、ワークフロー内の任意のジョブまたはステップからアクセスできます。 このオブジェクトには、以下に一覧表示されているすべてのプロパティが含まれています。
needs.<job_id>object現在のジョブが依存している1つのジョブ。
needs.<job_id>.outputsobject現在のジョブが依存しているジョブの出力の集合。
needs.<job_id>.outputs.<output name>string現在のジョブが依存しているジョブの特定の出力の値。
needs.<job_id>.resultstring現在のジョブが依存しているジョブの結果。 指定できる値は、successfailurecancelled、および skipped です。

needs コンテキストの内容の例

needs コンテキストの次の内容の例は、現在のジョブが依存している 2 つのジョブの情報を示しています。

{
  "build": {
    "result": "success",
    "outputs": {
      "build_id": "ABC123"
    }
  },
  "deploy": {
    "result": "failure",
    "outputs": {}
  }
}

needs コンテキストの使用例

このワークフロー例には 3 つのジョブがあります。つまり、ビルドを実行する build ジョブ、build ジョブを必要とする deploy ジョブ、builddeploy ジョブの両方を必要とし、ワークフローにエラーがある場合にのみ実行される debug ジョブです。 また、deploy ジョブでは needs コンテキストを使用して build ジョブからの出力にアクセスします。

YAML
name: Build and deploy
on: push

jobs:
  build:
    runs-on: ubuntu-latest
    outputs:
      build_id: ${{ steps.build_step.outputs.build_id }}
    steps:
      - uses: actions/checkout@v3
      - name: Build
        id: build_step
        run: |
          ./build
          echo "build_id=$BUILD_ID" >> $GITHUB_OUTPUT
  deploy:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - run: ./deploy --build ${{ needs.build.outputs.build_id }}
  debug:
    needs: [build, deploy]
    runs-on: ubuntu-latest
    if: ${{ failure() }}
    steps:
      - uses: actions/checkout@v3
      - run: ./debug

inputs コンテキスト

inputs コンテキストには、アクション、再利用可能なワークフロー、または手動でトリガーされたワークフローに渡される入力プロパティが含まれています。 再利用可能なワークフローの場合、入力の名前と種類は、再利用可能なワークフローの workflow_call イベント構成で定義され、再利用可能なワークフローを呼び出す外部ワークフローの jobs.<job_id>.with から入力値が渡されます。 手動でトリガーされたワークフローの場合、入力はワークフローの workflow_dispatch イベント構成で定義されています。

inputs コンテキストのプロパティは、ワークフロー ファイルで定義されています。 これらは、再利用可能なワークフローまたは workflow_dispatch イベントによってトリガーされたワークフローでのみ使用できます

プロパティ名Type説明
inputsobjectこのコンテキストは、再利用可能なワークフローまたは workflow_dispatch イベントによってトリガーされたワークフローでのみ使用できます。 このコンテキストには、ワークフロー内の任意のジョブまたはステップからアクセスできます。 このオブジェクトには、以下に一覧表示されているプロパティが含まれています。
inputs.<name>string または number、あるいは boolean または choice外部ワークフローから渡される各入力値。

inputs コンテキストの内容の例

次の inputs コンテキストの内容の例は、build_iddeploy_targetperform_deploy の各入力が定義されているワークフローのものです。

{
  "build_id": 123456768,
  "deploy_target": "deployment_sys_1a",
  "perform_deploy": true
}

再利用可能なワークフローでの inputs コンテキストの使用例

この再利用可能なワークフローの例では、inputs コンテキストを使って、呼び出し元ワークフローから再利用可能なワークフローに渡された build_iddeploy_targetperform_deploy 入力の値を取得しています。

YAML
name: Reusable deploy workflow
on:
  workflow_call:
    inputs:
      build_id:
        required: true
        type: number
      deploy_target:
        required: true
        type: string
      perform_deploy:
        required: true
        type: boolean

jobs:
  deploy:
    runs-on: ubuntu-latest
    if: ${{ inputs.perform_deploy }}
    steps:
      - name: Deploy build to target
        run: deploy --build ${{ inputs.build_id }} --target ${{ inputs.deploy_target }}

手動でトリガーされたワークフローでの inputs コンテキストの使用例

workflow_dispatch イベントによってトリガーされたこのワークフローの例では、inputs コンテキストを使って、ワークフローに渡された build_iddeploy_targetperform_deploy 入力の値を取得しています。

YAML
on:
  workflow_dispatch:
    inputs:
      build_id:
        required: true
        type: string
      deploy_target:
        required: true
        type: string
      perform_deploy:
        required: true
        type: boolean

jobs:
  deploy:
    runs-on: ubuntu-latest
    if: ${{ inputs.perform_deploy }}
    steps:
      - name: Deploy build to target
        run: deploy --build ${{ inputs.build_id }} --target ${{ inputs.deploy_target }}