push したのに Bitbucket Pipelines が動かない
エラーのメッセージはありません。push は通ったのに、パイプラインが出てこない。Pipelines がビルドを始めるのは、push したブランチに bitbucket-pipelines.yml があってそのブランチに合うパイプラインが書かれ、push がいくつかの上限の中にあるときだけです。Atlassian が挙げる6つの理由(The build was not triggered for a particular commit)と、手でビルドを始める方法です。
1. そのブランチに bitbucket-pipelines.yml が無い
Pipelines はファイルを、メインのブランチでなく push したブランチから読みます。ファイルを足す前に作ったブランチには、ファイルがありません。Bitbucket で Source を開いてそのブランチを選び、リポジトリのいちばん上に bitbucket-pipelines.yml が、その綴りのとおりにあるかを見ます。
2. ブランチに合うパイプラインが無い
Atlassian の glob パターンと開始の条件のページから:
feature/*はfeature/team/loginに合いません。*はスラッシュの手前で止まります。feature/**にします。- 星で始まるパターンは引用符で囲みます:
'*'・'**'・'*/feature'。 - ブランチ名そのものはパターンより優先です。
feature/*とfeature/bb-123があると、feature/bb-123への push では後者だけが動きます。 defaultはほかのどれにも合わないブランチで動き、タグでは動きません。タグにはtags:の節が要ります。pull-requests:はプルリクエストを作ったときに、元の(source)ブランチで合わせて動きます。フォークからのプルリクエストでは動きません。
pipelines:
default:
- step:
script:
- npm test
branches:
'feature/**':
- step:
script:
- npm test
tags:
'v*':
- step:
script:
- npm run release
3. 1回の push にブランチやタグが6本以上あった
Atlassian の Limitations of Bitbucket Pipelines によると、ブランチ・タグ・ブックマークを5本より多く含む push では、パイプラインを1つも動かしません。1回の push でビルド時間(build minutes)を使い切らないためです。git push --all・git push --tags・git push --mirror はすぐにそうなります。5本以下ずつ push します。
4. 1回の push では最後のコミットだけがビルドされる
いくつかのコミットをまとめて push すると、ビルドされるのはいちばん新しい1つだけです。失敗ではなく、Pipelines の決まりです。前のコミットをビルドしたいときは、そのコミットのページから手で始めます(下)。
5. コミットのメッセージに [skip ci] がある
メッセージに [skip ci] か [ci skip] があると、わざとビルドを飛ばします。マージコミットや、道具が書いたメッセージに入っていると見落としがちです。Commits のページでそのコミットを見ます。
6. push が大きすぎて知らせが届かなかった
Pipelines は push を webhook で知り、その中身は 256 KB までです。push の中のとても長いコミットのメッセージや、pull-requests のパイプラインならとても長いプルリクエストの説明で超えることがあり、そうなると何も動きません。Atlassian によると、大きさを確かめられるのはサポートだけです。
手でビルドを始める
Atlassian の記事にある3つの場所:
- リポジトリの Pipelines のページ:右上の近くの Run pipeline。
- Branches:そのブランチの3つの点から Run pipeline for a branch。
- Commits:コミットを開いて、右下の Run pipeline。push の最後でなかったコミットは、ここからビルドします。
- custom のパイプラインを変数つきで、またはスクリプトから REST API で:custom のパイプラインを実行する。
IntelliJ IDEA から Bitbucket のパイプラインを動かす
Pipeline Inbox for Bitbucket Pipelines は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。Bitbucket Cloud の全部のリポジトリのパイプラインを IDE のツールウィンドウに並べ、それぞれ bitbucket-pipelines.yml のどの節(default・branches・custom・pull-requests)で動いたか、何で始まったかを見せるので、何も始まらなかった push は自分のブランチの抜けとして分かります。Pro なら Run Pipeline で、IDE からブランチにパイプラインを始められます(ブランチ自身のパイプラインか custom のパイプライン、宣言された変数ごとの入力欄つき)。Run again で同じコミットをもう一度ビルドします。一覧・ステップ・ログは無料。実行・やり直し・停止は Pro(月 US$1.50・30日の無料試用つき)。
Atlassian・Bitbucket・Bitbucket Pipelines は Atlassian の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは Atlassian・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:「Exceeded build time limit of 120 minutes」 · 「Container 'Build' exceeded memory limit.」 · 「Container 'docker' exceeded memory limit.」 · キャッシュが効かない · 「unexpected system error」 · 「command not found」 · サブモジュールを取ってこない · 「We couldn't clone the repository」 · 「No online runner available」 · 「No space left on device」 · 「Step exceeded processing limits」 · 次のステップにアーティファクトが無い · 前は通ったビルドが今は落ちる · Build setup に時間がかかる · ビルド時間を使い切った · 「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