ジョブとワークフローのスキップとキャンセル

1+ year ago1 min read
Last updated • Read time
クラウド
This document is applicable to CircleCI クラウド
Server v4.x
This document is applicable to CircleCI Server v4.x
Server v3.x
This document is applicable to CircleCI Server v3.x

このドキュメントでは、パイプラインをトリガーする際に処理をスキップまたはキャンセルする方法を説明します。 これには複数の方法があります。 パイプラインのジョブをコミット時にスキップする、またはワークフロー自動キャンセル機能を使ってワークフローをキャンセルすることが可能です。 それぞれの方法を下記でご紹介します。

ジョブをスキップする

CircleCI はデフォルトでは、プロジェクトに変更をプッシュするたびに自動的にパイプラインをトリガーします。 この動作を無効にするには、コミットの本文またはタイトルの最初の 250 文字の中に、 [ci skip] タグまたは [skip ci] タグを追加します。 これにより、マークされたコミットだけでなく、そのプッシュに含まれる他のすべてのコミットもスキップされます。

スコープ

ci skip 機能のスコープに関して以下の点にご注意ください。

  • これらのコミットにパイプラインとワークフローは存在しますが、ジョブは実行されません。
  • 一度に複数のコミットをプッシュする場合、1 つの [ci skip] または [skip ci]すべてのコミットのビルドがスキップされます。
  • この機能はフォーク PR ではサポートされていません。 [ci skip] のメッセージを含むコミットをプッシュしても、スケジュールされたワークフローは実行されます。 設定ファイルを変更することで、現在のスケジュールをアップグレードすることができます。

コミットのタイトルの例

$ git log origin/master..HEAD

commit 63ce74221ff899955dd6258020d6cb9accede893
Author: Daniel Woelfel
Date:   Wed Jan 23 16:48:25 2017 -0800

    fix misspelling [ci skip]

このコミットはタイトルに [ci skip] が含まれているため、VCS にプッシュされても CircleCI 上でビルドされません。

コミットの説明の例

$ git log origin/master..HEAD

commit 99b4ce4d59e79cb379987b39c65f7113631f0635
Merge: 16ba8ca adc6571
Author: Daniel Woelfel
Date:   Tue Apr 25 15:56:42 2016 -0800

    A large feature with squashed commits

    [skip ci] Fix bug in feature
    Refactor feature code
    First attempt at feature

このコミットは説明に [ci skip] または [skip ci] が含まれているため、VCS にプッシュされても CircleCI 上でビルドされません。

冗長ワークフローの自動キャンセル

ブランチに変更を頻繁にプッシュすると、キューに入る可能性が高まります。 これにより、古いパイプラインのビルドが終わるまで、最新バージョンでのビルドを実行できない場合があります。

時間を節約するために、同じブランチで新しいパイプラインがトリガーされた場合は完了していないワークフローを自動的にキャンセルするように CircleCI を設定することができます。

スコープ

自動キャンセル機能を使用する際は以下の点にご注意ください。

  • プロジェクトのデフォルトのブランチ (通常は main) では、ビルドの自動キャンセルは行われません。
  • 自動キャンセルは、VCS へのプッシュや API 経由のプッシュによりトリガーされたパイプラインに影響を与えます。

自動キャンセルの有効化

  1. CircleCI Web アプリで Project Settings に移動します。 

  2. Advanced Settings をクリックします。

  3. スイッチを切り替えて、Auto-cancel redundant workflows (冗長ワークフローの自動キャンセル)オプションを有効にします。

自動キャンセルが有効になっているプロジェクトでは、非デフォルトのブランチで新しいビルドがトリガーされると、同じブランチ上のパイプラインやワークフローがキャンセルされます。ただし、以下のワークフローを除きます。

  • スケジュールされたワークフロー
  • 再実行のワークフロー

CircleCI Server での自動キャンセル

CircleCI Server v2.x では、ビルドの自動キャンセル機能は 、API によりトリガーされたビルド、またはワークフローを使用しないプロジェクトの GitHub へのプッシュによりトリガーされたビルドにのみ有効です。

CircleCI Server での自動キャンセルを有効にする手順

  1. CircleCI アプリケーションで、プロジェクトの横にある歯車のアイコンをクリックして、プロジェクトの設定に移動します。

  2. Build Settings セクションで、Advanced Settings をクリックします。

  3. Auto-cancel redundant builds セクションで On ボタンをクリックします。