ノート: GitHubホストランナーは、現在GitHub Enterprise Serverでサポートされていません。 GitHubパブリックロードマップで、計画されている将来のサポートに関する詳しい情報を見ることができます。
概要
注釈: ジョブレベルで並行処理が指定されている場合、ジョブの順序は保証されないか、互いに 5 分以内にそのキューを実行します。
jobs.<job_id>.concurrencyを使って、同じ並行処理グループを使う1つのジョブもしくはワークフローだけが実行されることを保証できます。 並行処理グループには、任意の文字列または式を使用できます。 式は、secrets コンテキストを除く任意のコンテキストを使用できます。 式に関する詳しい情報については「式」を参照してください。
ワークフローレベルで concurrency を指定することもできます。 詳しい情報については、concurrency を参照してください。
並行ジョブもしくはワークフローがキューに入っている場合、リポジトリ内の同じ並行グループを使う他のジョブもしくはワークフローが進行中だと、キューイングされたジョブもしくはワークフローは保留中になります。 この並行グループ内の以前の保留中のジョブもしくはワークフローは、キャンセルされます。 同じ並行グループ内にある実行中のジョブもしくはワークフローもキャンセルするには、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

