Bitbucket Pipelines:失敗したパイプラインをもう一度実行する
パイプラインが失敗すると、Bitbucket の Rerun ボタンで2つを選べます。失敗したステップだけをもう一度か、パイプライン全体をもう一度か。どちらも REST API には無いので、スクリプトやほかの道具からは、同じコミットで新しいパイプラインを始めるしかありません。失敗したステップを Bitbucket が自分でやり直す設定もありません。
Bitbucket の画面でもう一度実行する
Atlassian の View your pipeline より:失敗したパイプラインを開いて Rerun を選びます。
- Rerun failed steps は、失敗したステップだけを同じパイプラインの中でもう一度動かします。ログに新しい回が足され、パイプラインのログの Runs のメニューで回ごとに選べます。
- Rerun entire pipeline は、新しい番号の新しいパイプラインを始め、ログも別になります。
- ビルド時間は足し算です。ステップの所要時間にマウスを置くと、全部の回の合計が出ます。
- ビルドのアーティファクトは14日で消えます。前のステップのアーティファクトを使うステップは、14日以内しかもう一度実行できません。
API に再実行は無い
Bitbucket の Pipelines の API でできるのは、パイプラインを始める、パイプライン・ステップ・ログ・テストの結果を読む、パイプラインを止める(stopPipeline)だけです。再実行は BCLOUD-21591「API to rerun pipeline build」で、全体と失敗したステップだけの両方が求められています。2022年1月に起票、いまも Gathering Interest、18票、最新の票は2026年10月27日です。全体の再実行だけを分けた BCLOUD-21608 は、動きが無いとして2024年1月に Won't Fix で閉じられました。
なので、スクリプトからは同じ対象で新しいパイプラインを始めます。まず失敗したパイプラインを読みます:
curl -u '<メールアドレス>:<API トークン>' \
https://api.bitbucket.org/2.0/repositories/WORKSPACE/REPO/pipelines/{PIPELINE_UUID}
その target に、ブランチ(ref_name)、commit、動いた bitbucket-pipelines.yml の部分(selector)があります。それを Run a pipeline に送り返します:
curl -X POST -u '<メールアドレス>:<API トークン>' \
-H 'Content-Type: application/json' \
https://api.bitbucket.org/2.0/repositories/WORKSPACE/REPO/pipelines/ \
-d '{
"target": {
"type": "pipeline_ref_target",
"ref_type": "branch",
"ref_name": "main",
"commit": { "type": "commit", "hash": "<同じコミット>" },
"selector": { "type": "branches", "pattern": "main" }
}
}'
- Rerun entire pipeline と同じく、全部のステップが動き、パイプラインの番号は新しくなります。
- custom のパイプラインは、変数をもう一度送ります(custom のパイプラインを変数つきで実行する)。secured の変数の値は Bitbucket が返してくれません。
- プルリクエストのパイプラインは
"type": "pipeline_pullrequest_target"で、元と先のブランチ、両方のコミット、プルリクエストの id を送ります(API の説明の例のとおり)。 - API トークンには
write:pipelineのスコープが要ります。
自動でやり直す
Atlassian のナレッジベースの記事(2025年9月更新)によると、Bitbucket Cloud には失敗したビルドを自動でやり直す機能がありません。記事の回避策は、ステップの after-script で BITBUCKET_EXIT_CODE を見て、0 でなければ atlassian/trigger-pipeline のパイプでパイプラインをもう一度始める、という物です。
- パイプが始めるのはブランチのパイプラインの最初からで、失敗したステップではありません。終わるのも待ちません。
- パイプの API トークンには
read:pipeline:bitbucket・write:pipeline:bitbucket・read:repository:bitbucketのスコープが要ります。 - 失敗し続けるステップは、誰かが Bitbucket で止めるまで新しいパイプラインを始め続ける、と Atlassian は注意しています。
- パイプそのものに再試行を付ける案は BCLOUD-22872(2023年から Gathering Interest)。
IntelliJ IDEA からもう一度実行するなら
Pipeline Inbox for Bitbucket Pipelines は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。Bitbucket Cloud のすべてのリポジトリのパイプラインを IDE のツールウィンドウに並べ、番号は Bitbucket と同じです(失敗したステップを再実行した後は #42 (2))。もう一度実行(英語の画面では Run Again)は、同じコミット・ブランチ・プルリクエストで、bitbucket-pipelines.yml の同じ部分の新しいパイプラインを始めます。上と同じリクエストです。secured の変数など、Bitbucket が値を返さない変数のあるパイプラインは、代わりにパイプラインを実行…を開いて入れてもらいます。失敗したステップだけの再実行は、API に方法が無いので IDE からはできません。Bitbucket の Rerun を使います。一覧・ステップ・ログは無料、実行・もう一度実行・停止は Pro(月 US$1.50・30日間の無料試用つき)です。画面は日本語です。
Atlassian、Bitbucket、Bitbucket Pipelines は Atlassian の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは Atlassian・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:custom のパイプラインを変数つきで実行する · 前は通ったビルドが今は落ちる · 次のステップにアーティファクトが無い · ビルド時間を使い切った · 「Permission denied to update branch」 · 「You have reached your pull rate limit」(Docker Hub) · 「There is an error in your bitbucket-pipelines.yml」 · 「This pipeline was paused」(デプロイ) · IntelliJ IDEA の Bitbucket Pipelines 用プラグインの比較 · English