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

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

Article actions
View in Markdown

Requires Chrome (latest) built-in AI.

Requires Chrome (latest) 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 は、その中でも最も簡単に導入できる施策の一つと言えるでしょう。

Share:

Hidetaka Okamoto profile photo

Hidetaka Okamoto

Business Development

I'm a Business Development professional at DigitalCube. Based on my experience in EC ASP development and as a Developer Advocate at Stripe, I'm working on methods to increase revenue for SaaS and EC sites, exploring efficiency improvements using generative AI, and developing new business models. You can follow me on Twitter at @hidetaka__dev

Related Articles