Lesstep
Azure Pipelines・2026年11月4日に確認

Azure Pipelines:キャンセルしたのに実行が止まらない理由(条件・キャンセルの待ち時間・Force cancel)

Azure Pipelines のキャンセルは、すべてを止めるわけではありません。成功のあとにだけ動くものは止め、条件がまだ真のものは動かし続けます。condition: always() のステージ・ジョブ・ステップや、eq(variables['Build.SourceBranch'], 'refs/heads/main') のように実行の状態を見ない条件のものです。「Why is my build still running after I canceled it?」(キャンセルしたのにビルドがまだ動いているのはなぜ?)への Microsoft の答えは、条件にジョブの状態を調べる関数を足すことです(パイプラインの条件)。2026年10月27日の Sprint 281 の更新からは、それでも止まらない実行を強制的にキャンセルすることもできます。

キャンセルが止めるもの、止めないもの

キャンセルで止まる条件を書く

自分の判定の横に、状態を調べる関数を入れます:

- stage: Deploy
  condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))

失敗のあとには動かし、キャンセルのあとには動かしたくない後片付けには、succeededOrFailed()(自分の判定もあるなら and(succeededOrFailed(), ...))を使います。always() は、キャンセルのあとでも必ず動かしたいステップだけにして、キャンセルの待ち時間を与えます。

動き続けるステップに与えられる時間

キャンセルのあと、ジョブはまだ動くステップに cancelTimeoutInMinutes の時間を与えます。設定しなければ5分で、1〜35,790 の範囲です。そのあとは止められます。Microsoft がホストするエージェントでは、ジョブが動ける最長の時間の制限もそのまま効きます(Azure Pipelines のジョブのタイムアウトの節):

jobs:
- job: Deploy
  timeoutInMinutes: 60
  cancelTimeoutInMinutes: 2

Force cancel(Sprint 281)

そうした条件のせいで動き続ける実行のために、2026年10月27日の Sprint 281 の更新(Microsoft は2〜3週間かけて展開)が、実行に強制キャンセルの操作を足しました。確認を経てから動きます:

長く効く答えは、やはり条件を直すことです。Force cancel が止めるのはその1回の実行だけで、同じパイプラインの次のキャンセルはこれまでと同じように振る舞います。

終わった実行を放棄する

同じ更新で、Failed や Canceled のように終わった実行を、実行のメニューから放棄できるようになりました。放棄した実行は読み取り専用になり、どのステージももう一度実行できないので、誤ったアーティファクトが再びデプロイされるのを防げます。Abandon builds の権限が要り、取り消せません。

見分け方

キャンセルのあとも動いたステージ・ジョブ・ステップには、YAML に独自の条件があり、その中に状態を調べる関数がありません。止まったものには条件が無いか、succeeded() の入った条件があります。テンプレートがそうした条件を持ち込むこともあるので、ステージやジョブのもとになっているテンプレートも見ます。

IntelliJ IDEA と Rider でのビルド検証

Azure DevOps Pull Requests は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。プルリクエストを、ブランチ ポリシーを平易な文にして IDE のツールウィンドウに並べるので、失敗したビルドのポリシーはプルリクエストの横に「満たしていない」と出ます。Pro では、失敗したビルドや期限切れのビルドに再実行のリンクが出て、もう一度キューに入れられます。レビューの受信箱とブランチ ポリシーは無料、投票・コメント・完了・ビルドポリシーの再実行・プルリクの作成は Pro(月 US$1・30日間の無料試用つき)です。画面は日本語です。

JetBrains Marketplace で入れる

Azure DevOps は Microsoft Corporation の商標、IntelliJ IDEA と Rider は JetBrains s.r.o. の商標です。このページは Microsoft・JetBrains のいずれとも提携しておらず、承認も受けていません。

ほかに:ビルド検証:期限切れのビルド、手動のキュー、プルリクのビルドが動かない理由 · Ubuntu 26.04 の「Access to the path '/home/vsts' is denied」 · GitHub Actions での同じ問い · English