ノート: GitHubホストランナーは、現在GitHub Enterprise Serverでサポートされていません。 GitHubパブリックロードマップで、計画されている将来のサポートに関する詳しい情� �を見ることができます。
About contexts
コンテキストは、ワークフローの実行、ランナーの環境、ジョブ、ステップに関する情� �にアクセスする方法です。 Each context is an object that contains properties, which can be strings or other objects.
Contexts, objects, and properties will vary significantly under different workflow run conditions. For example, the matrix
context is only populated for jobs in a build matrix.
You can access contexts using the expression syntax. For more information, see "Expressions."
${{ <context> }}
警告: ワークフローやアクションを作る際には、攻撃者からの信� �できない入力をコードが実行するかもしれないことを、常に意識しなければなりません。 攻撃者が悪意あるコンテンツを挿入してくるかもしれないので、特定のコンテキストは信� �できない入力として扱うべきです。 詳しい情� �については「スクリプトインジェクションのリスクを理解する」を参照してく� さい。
コンテキスト名 | 種類 | 説明 |
---|---|---|
github | オブジェクト | ワークフロー実行に関する情� �。 詳しい情� �については、「github コンテキスト」を参照してく� さい。 |
env | オブジェクト | ワークフロー、ジョブ、ステップで設定された環境変数が含まれます。 詳しい情� �については、env コンテキストを参照してく� さい。 |
ジョブ | オブジェクト | Information about the currently running job. 詳しい情� �については、「job コンテキスト」を参照してく� さい。 |
steps | オブジェクト | Information about the steps that have been run in the current job. 詳しい情� �については、「steps コンテキスト」を参照してく� さい。 |
runner | オブジェクト | 現在のジョブを実行している runner に関する情� �。 詳しい情� �についてはrunner コンテキストを参照してく� さい。 |
secrets | オブジェクト | Contains the names and values of secrets that are available to a workflow run. For more information, see secrets context. |
strategy | オブジェクト | Information about the matrix execution strategy for the current job. For more information, see strategy context. |
matrix | オブジェクト | Contains the matrix properties defined in the workflow that apply to the current job. For more information, see matrix context. |
needs | オブジェクト | Contains the outputs of all jobs that are defined as a dependency of the current job. 詳しい情� �についてはneeds コンテキストを参照してく� さい。 |
As part of an expression, you can access context information using one of two syntaxes.
- インデックス構文:
github['sha']
- プロパティ参照外しの構文:
github.sha
プロパティ参照外しの構文を使用するには、プロパティ名に次の条件が必要です。
a-Z
または_
で始まる。a-Z
、0-9
、-
、または_
が続く。
コンテキストを使用する� �合の判断
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
をランナーから参照します。
Context availability
Different contexts are available throughout a workflow run. For example, the secrets
context may only be used at certain places within a job.
In addition, some functions may only be used in certain places. For example, the hashFiles
function is not available everywhere.
The following table indicates where each context and special function can be used within a workflow. Unless listed below, a function can be used anywhere. |
| パス | コンテキスト | Special functions |
| --------------------------- | --------------------------- | --------------------------- |
| concurrency
| github
| |
| env
| github, secrets
| |
| jobs.<job_id>.concurrency
| github, needs, strategy, matrix
| |
| jobs.<job_id>.container
| github, needs, strategy, matrix
| |
| jobs.<job_id>.container.credentials
| github, needs, strategy, matrix, env, secrets
| |
| jobs.<job_id>.container.env.<env_id>
| github, needs, strategy, matrix, job, runner, env, secrets
| |
| jobs.<job_id>.continue-on-error
| github, needs, strategy, matrix
| |
| jobs.<job_id>.defaults.run
| github, needs, strategy, matrix, env
| |
| jobs.<job_id>.env
| github, needs, strategy, matrix, secrets
| |
| jobs.<job_id>.environment
| github, needs, strategy, matrix
| |
| jobs.<job_id>.environment.url
| github, needs, strategy, matrix, job, runner, env, steps
| |
| jobs.<job_id>.if
| github, needs
| always, cancelled, success, failure
|
| jobs.<job_id>.name
| github, needs, strategy, matrix
| |
| jobs.<job_id>.outputs.<output_id>
| github, needs, strategy, matrix, job, runner, env, secrets, steps
| |
| jobs.<job_id>.runs-on
| github, needs, strategy, matrix
| |
| jobs.<job_id>.services
| github, needs, strategy, matrix
| |
| jobs.<job_id>.services.<service_id>.credentials
| github, needs, strategy, matrix, env, secrets
| |
| jobs.<job_id>.services.<service_id>.env.<env_id>
| github, needs, strategy, matrix, job, runner, env, secrets
| |
| jobs.<job_id>.steps.continue-on-error
| github, needs, strategy, matrix, job, runner, env, secrets, steps
| hashFiles
|
| jobs.<job_id>.steps.env
| github, needs, strategy, matrix, job, runner, env, secrets, steps
| hashFiles
|
| jobs.<job_id>.steps.if
| github, needs, strategy, matrix, job, runner, env, steps
| always, cancelled, success, failure, hashFiles
|
| jobs.<job_id>.steps.name
| github, needs, strategy, matrix, job, runner, env, secrets, steps
| hashFiles
|
| jobs.<job_id>.steps.run
| github, needs, strategy, matrix, job, runner, env, secrets, steps
| hashFiles
|
| jobs.<job_id>.steps.timeout-minutes
| github, needs, strategy, matrix, job, runner, env, secrets, steps
| hashFiles
|
| jobs.<job_id>.steps.with
| github, needs, strategy, matrix, job, runner, env, secrets, steps
| hashFiles
|
| jobs.<job_id>.steps.working-directory
| github, needs, strategy, matrix, job, runner, env, secrets, steps
| hashFiles
|
| jobs.<job_id>.strategy
| github, needs
| |
| jobs.<job_id>.timeout-minutes
| github, needs, strategy, matrix
| |
Example: printing context information to the log
You can print the contents of contexts to the log for debugging. The toJSON
function is required to pretty-print JSON objects to the log.
警告: github
コンテキスト全体を使う� �合には、github.token
のようなセンシティブな情� �が含まれていることを忘れないようにしてく� さい。 GitHubは、シークレットがコンソールに出力される際にはマスクしますが、コンテキストをエクスポートしたりプリントしたりするときには注意が必要です。
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
コンテキストは、ワークフローの実行および、その実行をトリガーしたイベントの情� �を含みます。 You can also read most of the github
context data in environment variables. 環境変数に関する詳しい情� �については、「環境変数の利用」を参照してく� さい。
警告: github
コンテキスト全体を使う� �合には、github.token
のようなセンシティブな情� �が含まれていることを忘れないようにしてく� さい。 GitHubは、シークレットがコンソールに出力される際にはマスクしますが、コンテキストをエクスポートしたりプリントしたりするときには注意が必要です。
警告: ワークフローやアクションを作る際には、攻撃者からの信� �できない入力をコードが実行するかもしれないことを、常に意識しなければなりません。 攻撃者が悪意あるコンテンツを挿入してくるかもしれないので、特定のコンテキストは信� �できない入力として扱うべきです。 詳しい情� �については「スクリプトインジェクションのリスクを理解する」を参照してく� さい。
プロパティ名 | 種類 | 説明 |
---|---|---|
github | オブジェクト | ワークフローのあらゆるジョブやステップにおいて使用できる最上位のコンテキスト。 This object contains all the properties listed below. |
github.action | string | The name of the action currently running, or the id of a step. GitHub removes special characters, and uses the name __run when the current step runs a script without an id . If you use the same action more than once in the same job, the name will include a suffix with the sequence number with underscore before it. For example, the first script you run will have the name __run , and the second script will be named __run_2 . 同様に、actions/checkout の2回目の呼び出しはactionscheckout2 となります。 |
github.action_path | string | The path where an action is located. This property is only supported in composite actions. You can use this path to access files located in the same repository as the action. |
github.action_ref | string | For a step executing an action, this is the ref of the action being executed. For example, v2 . |
github.action_repository | string | For a step executing an action, this is the owner and repository name of the action. For example, actions/checkout . |
github.actor | string | The username of the user that initiated the workflow run. |
github.api_url | string | The URL of the GitHub REST API. |
github.base_ref | string | ワークフローの実行における base_ref またはプルリクエストのターゲットブランチ。 このプロパティは、ワークフローの実行をトリガーするイベントが pull_request または pull_request_target のいずれかである� �合にのみ使用できます。 |
github.env | string | Path on the runner to the file that sets environment variables from workflow commands. This file is unique to the current step and is a different file for each step in a job. For more information, see "Workflow commands for GitHub Actions." |
github.event | オブジェクト | webhook ペイロードの完全なイベント。 このコンテキストを使用して、イベントの個々のプロパティにアクセスできます。 This object is identical to the webhook payload of the event that triggered the workflow run, and is different for each event. The webhooks for each GitHub Actions event is linked in "Events that trigger workflows." For example, for a workflow run triggered by the push event, this object contains the contents of the push webhook payload. |
github.event_name | string | ワークフローの実行をトリガーしたイベントの名前。 |
github.event_path | string | The path to the file on the runner that contains the full event webhook payload. |
github.graphql_url | string | The URL of the GitHub GraphQL API. |
github.head_ref | string | ワークフローの実行における head_ref またはPull Requestのソースブランチ。 このプロパティは、ワークフローの実行をトリガーするイベントが pull_request または pull_request_target のいずれかである� �合にのみ使用できます。 |
github.job | string | 現在のジョブのjob_id 。 |
github.ref | string | ワークフローの実行をトリガーしたブランチまたはタグ ref。 For branches this is the format refs/heads/<branch_name> , and for tags it is refs/tags/<tag_name> . |
github.path | string | Path on the runner to the file that sets system PATH variables from workflow commands. This file is unique to the current step and is a different file for each step in a job. For more information, see "Workflow commands for GitHub Actions." |
Example contents of the github
context
The following example context is from a workflow run triggered by the push
event. The event
object in this example has been truncated because it is identical to the contents of the push
webhook payload.
Note: This context is an example only. The contents of a context depends on the workflow that you are running. Contexts, objects, and properties will vary significantly under different workflow run conditions.
{
"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"
}
Example usage of the github
context
This example workflow uses the github.event_name
context to run a job only if the workflow run was triggered by the pull_request
event.
name: Run CI
on: [push, pull_request]
jobs:
normal_ci:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run normal CI
run: ./run-tests
pull_request_ci:
runs-on: ubuntu-latest
if: ${{ github.event_name == 'pull_request' }}
steps:
- uses: actions/checkout@v2
- name: Run PR CI
run: ./run-additional-pr-ci
env
コンテキスト
env
コンテキストには、ワークフロー、ジョブ、ステップで設定された環境変数が含まれます。 ワークフローでの環境変数の設定に関する詳しい情� �については「GitHub Actionsのワークフロー構文」を参照してく� さい。
env
の構文で、ワークフローファイル中の環境変数の値を利用できます。 You can use the env
context in the value of any key in a step except for the id
and uses
keys. ステップの構文に関する詳しい情� �については「GitHub Actionsのワークフロー構文」を参照してく� さい。
ランナー中で環境変数の値を使いたい� �合は、ランナーのオペレーティングシステ� で環境変数を読み取る通常の方法を使ってく� さい。
プロパティ名 | 種類 | 説明 |
---|---|---|
env | オブジェクト | このコンテキストは、ジョブのステップごとに異なります。 このコンテキストには、ジョブのあらゆるステップからアクセスできます。 This object contains the properties listed below. |
env.<env_name> | string | 特定の環境変数の値。 |
Example contents of the env
context
The contents of the env
context is a mapping of environment variable names to their values. The context's contents can change depending on where it is used in the workflow run.
{
"first_name": "Mona",
"super_duper_var": "totally_awesome"
}
Example usage of the env
context
This example workflow shows how the env
context can be configured at the workflow, job, and step levels, as well as using the context in steps.
同じ名前で複数の環境変数が定義されている� �合、GitHubは最も具体的な環境変数を使用します。 たとえば、ステップ中で定義された環境変数は、ジョブやワークフローの同じ名前の変数をステップの実行の間オーバーライドします。 ジョブで定義された変数は、そのジョブの実行の間はワークフローで定義された同じ名前の変数をオーバーライドします。
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
job
コンテキスト
job
コンテキストは、現在実行中のジョブに関する情� �を含みます。
プロパティ名 | 種類 | 説明 |
---|---|---|
ジョブ | オブジェクト | このコンテキストは、実行しているジョブごとに異なります。 このコンテキストには、ジョブのあらゆるステップからアクセスできます。 This object contains all the properties listed below. |
job.container | オブジェクト | ジョブのコンテナに関する情� �。 コンテナに関する詳しい情� �については、「GitHub Actions のワークフロー構文」を参照してく� さい。 |
job.container.id | string | The ID of the container. |
job.container.network | string | The ID of the container network. runner は、コンテナ内のすべてのジョブに使用されるネットワークを作成します。 |
job.services | オブジェクト | ジョブのために作成されたサービスコンテナ。 サービスコンテナに関する詳しい情� �については、「GitHub Actions のワークフロー構文」を参照してく� さい。 |
job.services.<service_id>.id | string | The ID of the service container. |
job.services.<service_id>.network | string | The ID of the service container network. runner は、コンテナ内のすべてのジョブに使用されるネットワークを作成します。 |
job.services.<service_id>.ports | オブジェクト | サービスコンテナの公開ポート。 |
job.status | string | ジョブの現在の状態。 success 、failure 、cancelled のいずれかの値をとります。 |
Example contents of the job
context
This example job
context uses a PostgreSQL service container with mapped ports. If there are no containers or service containers used in a job, the job
context only contains the status
property.
{
"status": "success",
"container": {
"network": "github_network_53269bd575974817b43f4733536b200c"
},
"services": {
"postgres": {
"id": "60972d9aa486605e66b0dad4abb638dc3d9116f566579e418166eedb8abb9105",
"ports": {
"5432": "49153"
},
"network": "github_network_53269bd575974817b43f4733536b200c"
}
}
}
Example usage of the job
context
This example workflow configures a PostgreSQL service container, and automatically maps port 5432 in the service container to a randomly chosen available port on the host. The job
context is used to access the number of the port that was assigned on the host.
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@v2
- run: pg_isready -h localhost -p ${{ job.services.postgres.ports[5432] }}
- run: ./run-tests
steps
コンテキスト
The steps
context contains information about the steps in the current job that have an id
specified and have already run.
プロパティ名 | 種類 | 説明 |
---|---|---|
steps | オブジェクト | このコンテキストは、ジョブのステップごとに異なります。 このコンテキストには、ジョブのあらゆるステップからアクセスできます。 This object contains all the properties listed below. |
steps.<step_id>.outputs | オブジェクト | ステップに定義された出力のセット。 For more information, see "Metadata syntax for GitHub Actions." |
steps.<step_id>.conclusion | string | continue-on-error が適用された後に完了したステップの結果。 success 、failure 、cancelled 、skipped のいずれかの値をとります。 continue-on-error のステップが失敗すると、outcome はfailure になりますが、最終的なconclusion はsuccess になります。 |
steps.<step_id>.outcome | string | continue-on-error が適用される前の完了したステップの結果。 success 、failure 、cancelled 、skipped のいずれかの値をとります。 continue-on-error のステップが失敗すると、outcome はfailure になりますが、最終的なconclusion はsuccess になります。 |
steps.<step_id>.outputs.<output_name> | string | 特定の出力の値。 |
Example contents of the steps
context
This example steps
context shows two previous steps that had an id
specified. The first step had the id
named checkout
, the second generate_number
. The generate_number
step had an output named random_number
.
{
"checkout": {
"outputs": {},
"outcome": "success",
"conclusion": "success"
},
"generate_number": {
"outputs": {
"random_number": "1"
},
"outcome": "success",
"conclusion": "success"
}
}
Example usage of the steps
context
This example workflow generates a random number as an output in one step, and a later step uses the steps
context to read the value of that output.
name: Generate random failure
on: push
jobs:
randomly-failing-job:
runs-on: ubuntu-latest
steps:
- id: checkout
uses: actions/checkout@v2
- name: Generate 0 or 1
id: generate_number
run: echo "::set-output name=random_number::$(($RANDOM % 2))"
- name: Pass or fail
run: |
if [[ ${{ steps.generate_number.outputs.random_number }} == 0 ]]; then exit 0; else exit 1; fi
runner
コンテキスト
runner
コンテキストには、現在のジョブを実行しているランナーに関する情� �が含まれています。
プロパティ名 | 種類 | 説明 |
---|---|---|
runner | オブジェクト | このコンテキストは、実行しているジョブごとに異なります。 This object contains all the properties listed below. |
runner.name | string | The name of the runner executing the job. |
runner.os | string | ジョブを実行しているランナーのオペレーティングシステ� 。 取り得る値はLinux 、Windows 、macOS のいずれか。 |
runner.temp | string | ランナー上の一時ディレクトリへのパス。 このディレクトリは、各ジョブの開始及び終了時点で空になります。 ランナーのユーザアカウントが削除する権限を持っていない� �合、ファイルは削除されないことに注意してく� さい。 |
runner.tool_cache | string | GitHubホストランナーにプレインストールされているツールを含むディレクトリへのパス。 For more information, see "About GitHub-hosted runners". |
Example contents of the runner
context
The following example context is from a Linux GitHub-hosted runner.
{
"os": "Linux",
"arch": "X64",
"name": "GitHub Actions 2",
"tool_cache": "/opt/hostedtoolcache",
"temp": "/home/runner/work/_temp"
}
Example usage of the runner
context
This example workflow uses the runner
context to set the path to the temporary directory to write logs, and if the workflow fails, it uploads those logs as artifact.
name: Build
on: push
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- 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@v2
with:
name: Build failure logs
path: ${{ runner.temp }}/build_logs
secrets
context
The secrets
context contains the names and values of secrets that are available to a workflow run. The secrets
context is not available for composite actions. For more information about secrets, see "Encrypted secrets."
GITHUB_TOKEN
is a secret that is automatically created for every workflow run, and is always included in the secrets
context. For more information, see "Automatic token authentication."
警告: GitHubは、ログに出力されたシークレットを自動的に削除しますが、シークレットをログに出力することは意識的に避けなくてはなりません。
プロパティ名 | 種類 | 説明 |
---|---|---|
secrets | オブジェクト | This context is the same for each job in a workflow run. このコンテキストには、ジョブのあらゆるステップからアクセスできます。 This object contains all the properties listed below. |
secrets.GITHUB_TOKEN | string | Automatically created token for each workflow run. For more information, see "Automatic token authentication." |
secrets.<secret_name> | string | The value of a specific secret. |
Example contents of the secrets
context
The following example contents of the secrets
context shows the automatic GITHUB_TOKEN
, as well as two other secrets available to the workflow run.
{
"github_token": "***",
"NPM_TOKEN": "***",
"SUPERSECRET": "***"
}
Example usage of the secrets
context
以下のワークフローの例ではlabeler actionを使用しています。これには、repo-token
入力パラメータの値としてGITHUB_TOKEN
を渡すことが必要です。
name: Pull request labeler
on: [ pull_request_target ]
jobs:
triage:
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
strategy
context
For workflows with a build matrix, the strategy
context contains information about the matrix execution strategy for the current job.
プロパティ名 | 種類 | 説明 |
---|---|---|
strategy | オブジェクト | このコンテキストは、実行しているジョブごとに異なります。 You can access this context from any job or step in a workflow. This object contains all the properties listed below. |
strategy.fail-fast | string | When true , all in-progress jobs are canceled if any job in a build matrix fails. For more information, see "Workflow syntax for GitHub Actions." |
strategy.job-index | string | The index of the current job in the build matrix. Note: This number is a zero-based number. The first job's index in the build matrix is 0 . |
strategy.job-total | string | The total number of jobs in the build matrix. Note: This number is not a zero-based number. For example, for a build matrix with four jobs, the value of job-total is 4 . |
strategy.max-parallel | string | matrix ジョブ戦略を使用するとき、同時に実行できるジョブの最大数。 For more information, see "Workflow syntax for GitHub Actions." |
Example contents of the strategy
context
The following example contents of the strategy
context is from a build matrix with four jobs, and is taken from the final job. Note the difference between the zero-based job-index
number, and job-total
which is not zero-based.
{
"fail-fast": true,
"job-index": 3,
"job-total": 4,
"max-parallel": 4
}
Example usage of the strategy
context
This example workflow uses the strategy.job-index
property to set a unique name for a log file for each job in a build matrix.
name: Test matrix
on: push
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
test-group: [1, 2]
node: [14, 16]
steps:
- uses: actions/checkout@v2
- run: npm test > test-job-${{ strategy.job-index }}.txt
- name: Upload logs
uses: actions/upload-artifact@v2
with:
name: Build log for job ${{ strategy.job-index }}
path: test-job-${{ strategy.job-index }}.txt
matrix
context
For workflows with a build matrix, the matrix
context contains the matrix properties defined in the workflow file that apply to the current job. For example, if you configure a build matrix with the os
and node
keys, the matrix
context object includes the os
and node
properties with the values that are being used for the current job.
There are no standard properties in the matrix
context, only those which are defined in the workflow file.
プロパティ名 | 種類 | 説明 |
---|---|---|
matrix | オブジェクト | This context is only available for jobs in a build matrix, and changes for each job in a workflow run. You can access this context from any job or step in a workflow. This object contains the properties listed below. |
matrix.<property_name> | string | The value of a matrix property. |
Example contents of the matrix
context
The following example contents of the matrix
context is from a job in a build matrix that has the os
and node
matrix properties defined in the workflow. The job is executing the matrix combination of an ubuntu-latest
OS and Node.js version 16
.
{
"os": "ubuntu-latest",
"node": 16
}
Example usage of the matrix
context
This example workflow creates a build matrix with os
and node
keys. It uses the matrix.os
property to set the runner type for each job, and uses the matrix.node
property to set the Node.js version for each job.
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@v2
- uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node }}
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
needs
コンテキスト
needs
コンテキストは、現在のジョブの依存関係として定義されたすべてのジョブからの出力を含みます。 For more information on defining job dependencies, see "Workflow syntax for GitHub Actions."
プロパティ名 | 種類 | 説明 |
---|---|---|
needs | オブジェクト | This context is only populated for workflow runs that have dependent jobs, and changes for each job in a workflow run. You can access this context from any job or step in a workflow. This object contains all the properties listed below. |
needs.<job_id> | オブジェクト | 現在のジョブが依存している1つのジョブ。 |
needs.<job_id>.outputs | オブジェクト | 現在のジョブが依存しているジョブの出力の集合。 |
needs.<job_id>.outputs.<output name> | string | 現在のジョブが依存しているジョブの特定の出力の値。 |
needs.<job_id>.result | string | 現在のジョブが依存しているジョブの結果。 success 、failure 、cancelled 、skipped のいずれかの値をとります。 |
Example contents of the needs
context
The following example contents of the needs
context shows information for two jobs that the current job depends on.
{
"build": {
"result": "success",
"outputs": {
"build_id": "ABC123"
}
},
"deploy": {
"result": "failure",
"outputs": {}
}
}
Example usage of the needs
context
This example workflow has three jobs: a build
job that does a build, a deploy
job that requires the build
job, and a debug
job that requires both the build
and deploy
jobs and runs only if there is a failure in the workflow. The deploy
job also uses the needs
context to access an output from the build
job.
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@v2
- name: Build
id: build_step
run: |
./build
echo "::set-output name=build_id::$BUILD_ID"
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: ./deploy --build ${{ needs.build.outputs.build_id }}
debug:
needs: [build, deploy]
runs-on: ubuntu-latest
if: ${{ failure() }}
steps:
- uses: actions/checkout@v2
- run: ./debug