CircleCI のAuto-cancel redundant workflows 機能で、最新のpushでのみCI / CDを実行させる

CircleCI のAuto-cancel redundant workflows 機能で、最新のpushでのみCI / CDを実行させる

この記事の操作
Markdownで見る

Chrome(最新版)のBuilt-in AIが必要です。

Chrome(最新版)のBuilt-in AIが必要です。

この記事では、CircleCI のCI / CDパイプラインへ連続してpushを行った際に、古いcommitのパイプライン実行を中断させ、クレジット消費量を削減する方法について紹介します。この方法を採用するメリットとデメリットなどもまとめますので、コスト削減とフィードバックループの精度などのトレードオフについてもぜひ考えてみてください。

pushを連続して行うケース

Gitベースの開発フローとGitHub Actions / CircleCIなどを利用したCI / CDパイプラインがある開発現場では、時に「さっきpushしたけど、これも追加しておかないと・・・」のような流れで連続してcommit / pushを行うことがあります。

そうなると小さな変更を1つ追加しただけのケースでも、CIパイプラインが2度実行され、プランや.circleci/config.ymlの設定によっては通常より長い待機時間が発生するなどのリスクが生まれます。

最近では、AIコーディングやレビューツール・サービスが発展したことで、PRの中で「Commit suggestion」による改善提案を直接コミットするケースなどもあります。こちらはsuggestionを1つずつcommitすることになるため、場合によってはレビューエージェントの提案を全て受け入れた結果、3つも4つもコミットが新しく発生することも珍しくありません。そうなると、GitHub ActionsやCircleCIのパイプライン実行もその数だけ増えることになり、実行時間やクレジットの消費が激しくなります。

Auto-cancel redundant workflows で最新のcommitのみパイプラインを実行する

CircleCI には、この問題を解決するための機能が用意されています。それが Auto-cancel redundant workflows です。

この機能を有効にすると、同じブランチに新しい push が行われた際、そのブランチで実行中または待機中の古いパイプラインが自動的にキャンセルされます。最新のコードに対してのみパイプラインが実行されるため、クレジット消費量を抑えることができます。

Auto-cancel redundant workflowsの設定方法

設定は非常にシンプルで、プロジェクトの設定画面から数クリックで有効化できます。

まず CircleCI のダッシュボードから対象のプロジェクトを選択し、Project Settings を開いてください。左側のメニューから Advanced を選択すると、Advanced Settings ページが表示されます。

ページ内に Auto-cancel redundant workflows という項目があります。

この項目の右側にあるトグルスイッチをオンにすれば、機能が有効化されます。

Auto-cancel redundant workflowsの制限事項

この機能は非常に便利ですが、いくつか理解しておくべき制限事項があります。

デフォルトブランチには適用されない

最も重要な点として、デフォルトブランチ(main や master など)には自動キャンセルが適用されません。これはCircleCI の公式ドキュメントにも with the exception of your default branch と明記されています。「自信を持ってコードをリリースする」「どのコミットで問題が起きたかを迅速に特定し、改善しやすくする」といった CI / CDの目的を考えると、顧客へ提供するコードベースそのものとなるデフォルトブランチについては、確実にパイプラインを実行する必要があるということかもしれません。

スケジュール実行や手動再実行なども対象外

またScheduled workflows と Re-run workflows は自動キャンセルの対象外です。スケジュール実行された workflow は、新しい push があっても引き続き実行されます。Fork PR からトリガーされたパイプラインにも対応していません。オープンソースプロジェクトで外部からの PR を受け付けている場合、この点に注意してください。

「特定のケースでのみ自動キャンセルする」などの条件付けはできない

2025/12時点では、この機能は「オンかオフか」の設定のみできます。そのため、「この条件では自動キャンセルさせたくない」のような個別ルールの設定には対応していません。機能要望は出ていますが、もしこのケースに該当する場合は、上記の除外ルールを活用するなどの代替案を検討しましょう。

参考:Skip CI and cancel workflows – CircleCI Documentation

Auto-cancel redundant workflows の向き不向き

CircleCI の Auto-cancel redundant workflows を使うことで、CI / CDパイプラインが短時間に複数回実行されるケースを回避できます。これによってCircleCIのクレジット消費や、並列実行待ちが発生した場合の待機時間増加などを抑止することができます。

しかし一方でパイプラインのジョブが失敗した場合に、「そのパイプラインをトリガーしたコミットが原因なのか、Auto-cancelされたコミットが原因なのか」などの切り分けが難しくなるデメリットも発生します。そのため、「コスト削減や実行頻度の効率化」をとるか、それとも「こまめにCIを実行することで、ミスに素早く気づけるフィードバックサイクルを回す」のどちらをとるかをチームや開発生産性などの視点から検討する必要があります。

個人開発や少人数での開発などであれば、調査コストもあまり高くないとは思いますので、この機能をオンにしてfreeプランをお得に使う方向を模索するのがいいかもしれません。

CircleCI のクレジット管理には、この機能以外にも、パイプラインの最適化、テストの並列実行、キャッシュの活用など、様々なアプローチがあります。Auto-cancel redundant workflows は、その中でも最も簡単に導入できる施策の一つと言えるでしょう。

シェア:

Hidetaka Okamoto profile photo

Hidetaka Okamoto

ビジネスデベロップメント

DigitalCubeのBizDev。EC ASPの開発やStripeのDeveloper Advocateとしての経験を元に、SaaSやECサイトの収益を増やすための方法・生成AIを使った効率化や新しい事業モデルの模索などに挑戦する。

⭐ この記事への反応

はてなアカウントでスターを付けることができます

関連記事

CircleCIでコーディングエージェントにCIエラーの修正指示を出す

AIコーディングにおいて、自動テストやCIサービスによる品質チェックは欠かすことのできない要件です。実行するたびに生成結果が変わる生成AIには、意図しない設計や実装・変更などが紛れ込むリスクがあり、それを回避するための安 […]

CircleCIでE2Eテストを実行するときは、使用ツールに応じて Docker イメージを変更しよう

CircleCIは、テストやビルドを効率的に実施し、設定コードを定義できるようにするために幾つかのDocker ImageやOrbを提供しています。ただ、調べてみると、E2Eテストツールによってどのイメージを使うのが最適 […]

CodeRabbit Proプランを CircleCI と連携して CI エラー修正を効率化する

2026年の年始休暇は、「スマホだけでどれだけ開発ができるか」に挑戦していました。その中で特にツラいなーと感じたのは、「作られたコードのデバッグ作業」です。この記事では、テストやビルドが失敗するタイプのデバッグ・調査作業 […]

Cursor x CircleCI MCPサーバーで CI パイプラインの分析やコスト最適化を実施する

*この記事は、Cursor Advent Calendar 2025の記事です。 開発チームにとって、開発フローやツールのコスト最適化は定期的に見直しや取り組みが必要なタスクの1つです。プロダクト・事業者目線においても、 […]