概要
注: ジョブ レベルでコンカレンシーが指定されている場合、ジョブの順序は保証されないか、互いに 5 分以内にそのキューを実行します。
同じコンカレンシー グループを使うジョブまたはワークフローを一度に 1 つだけ実行するには、jobs.<job_id>.concurrency
を使います。 並行処理グループには、任意の文字列または式を使用できます。 使用できる式コンテキスト: github
、inputs
、vars
、needs
、strategy
、matrix
。 式の詳細については、「式」を参照してください。
ワークフロー レベルで concurrency
を指定することもできます。 詳細については、「concurrency
」を参照してください。
並行ジョブかワークフローがキューに入っている場合、リポジトリ内の同じ並行グループを使う他のジョブかワークフローが進行中だと、キューイングされたジョブかワークフローは pending
になります。 この並行グループ内の以前の保留中のジョブもしくはワークフローは、キャンセルされます。 同じコンカレンシー グループ内の現在実行中のジョブかワークフローもキャンセルするには、cancel-in-progress: true
を指定します。
並行性とデフォルトの動作の使用例
concurrency: staging_environment
concurrency: ci-${{ github.ref }}
並行性を使って進行中のジョブもしくは実行をキャンセルする例
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
例: フォールバック値の使用
特定のイベントにのみ定義されるプロパティでグループ名を作成する場合、フォールバック値を使用できます。 たとえば、github.head_ref
は pull_request
イベントにのみ定義されます。 ワークフローが pull_request
イベントに加えて他のイベントにも応答する場合、構文エラーを回避するためにフォールバックを指定する必要があります。 次のコンカレンシー グループは、pull_request
イベントで進行中のジョブか実行のみを取り消します。github.head_ref
が未定義の場合、コンカレンシー グループは実行 ID にフォールバックします。これは、一意であり、実行に対して定義されていることが保証されています。
concurrency:
group: ${{ github.head_ref || github.run_id }}
cancel-in-progress: true
例: 現在のワークフローで進行中のジョブまたは実行のみを取り消します
同じリポジトリに複数のワークフローがある場合、他のワークフローの進行中のジョブまたは実行が取り消されないように、コンカレンシー グループ名はワークフロー間で一意である必要があります。 そうでない場合、ワークフローに関係なく、以前に進行中または保留中のジョブが取り消されます。
同じワークフローの進行中の実行だけを取り消すには、github.workflow
プロパティを使ってコンカレンシー グループを構築します。
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true