Bitbucket Pipelines:スケジュールしたパイプラインが動かない
Pipelines のスケジュールは、1つのブランチで、毎時・毎日・毎週にパイプラインを起動します。置き場は bitbucket-pipelines.yml ではなく、リポジトリの Pipelines の画面の右上の Schedules です。決めた時刻に何も出ないときは、スケジュールは動いたのにパイプラインを起動できなかったか、別の時刻に動いたか、動いて失敗したのに誰にも知らせが行かなかったかのどれかです。
無効・消えたブランチ・名前の変わったパイプライン
Atlassian のスケジュールされたパイプラインと手動でトリガーされたパイプラインのトラブルシューティングは、スケジュールが動かない原因に次を挙げています。
- スケジュールが無効になっている。Schedules の画面で確かめます。
- ビルドするブランチが消された。スケジュールはブランチを1つ名指ししていて、ほかのブランチには移りません。
- そのブランチのパイプラインの設定が正しくない(「There is an error in your bitbucket-pipelines.yml」)。
- カスタムパイプラインなら、スケジュールに書いた名前が、そのブランチのファイルの
custom:の下の名前と合わなくなった。YAML で名前を変えても、スケジュールは古い名前を指したままです。
スケジュールが読むのは、自分のブランチのファイルです。機能ブランチで足したカスタムパイプラインは、マージするまで main のスケジュールからは見えません。
実行ごとに何が起きたかを見る
Schedules の画面では、過去のスケジュールの実行を見られます。REST API には、スケジュールが動いたたびの記録が、何も起動できなかった回も含めて残ります。Pipelines の API(英語)で、スケジュールの一覧を取り、そのうち1つの実行の一覧を取ります。
curl -s -u "you@example.com:$BITBUCKET_API_TOKEN" \
"https://api.bitbucket.org/2.0/repositories/<workspace>/<repo>/pipelines_config/schedules/"
curl -s -u "you@example.com:$BITBUCKET_API_TOKEN" \
"https://api.bitbucket.org/2.0/repositories/<workspace>/<repo>/pipelines_config/schedules/%7B<schedule-uuid>%7D/executions/"
API の定義では、実行の記録は2種類です。起動したパイプラインを持つものと、「failed to be executed」(実行できなかった)としてキーとメッセージつきのエラーを持つものです。メッセージに、スケジュールがパイプラインを起動できなかったわけが出ます。UUID は波かっこごと渡し、アドレスの中では %7B と %7D と書きます。API トークンには read:pipeline:bitbucket のスコープが要り、ユーザー名は Atlassian アカウントのメールアドレスです。
別の時刻に動いた
同じページによると、時刻は「ローカルのタイムゾーン」で選び、スケジュールは「UTC で実行」されます。トラブルシューティングにも、時刻のずれの原因として「タイムゾーンの取り違え」があります。夏に 2:00 と選んだ毎日の実行は、時計が切り替わると、ローカルの時刻では1時間ずれます。スケジュールのほうは動かないからです。
REST API で作るスケジュールは、秒から始まる7つの欄の cron を UTC で書きます。API の例の 0 0 12 * * ? * は毎日 12:00 UTC に動き、Schedules の画面にはそのまま cron の式で出ます。あとから API で式を変えても効きません。更新で受け付けるのは enabled だけで、Atlassian の課題 BCLOUD-23880(英語・2025年10月に立ち、長期のバックログ)にも古い式が残ると報告されています。消して作り直します。
画面で選べるのは毎時・毎日・毎週です。もっと短い間隔は、まだ要望の段階です(BCLOUD-20564・英語)。
変数のあるカスタムパイプライン
カスタムパイプラインを手で動かすと、変数の値を聞かれます(カスタムパイプラインを動かす)。スケジュールには値を渡す欄がありません。足してほしいという要望は開いたままです。BCLOUD-20328(英語・143票)と BCLOUD-19829(英語)です。スケジュールの実行に要る値は、どの実行にも届くリポジトリ・ワークスペース・デプロイの変数に置きます(変数が空になる)。
起動したのに止まった
- 管理者だけがデプロイできる環境では、スケジュールの実行が「This pipeline was paused because tried to deploy, but only an admin can deploy to <environment>」で止まります。スケジュールを管理者が作っていても同じです(BCLOUD-22893・英語)。許された人が再開します(「This pipeline was paused」)。
- スケジュールの実行も、ほかの実行と同じくビルドの分数を使います。残りが無ければ何も起動しません(「You've run out of build minutes」)。
失敗したのに、誰も知らなかった
スケジュールの実行が失敗しても、メールは来ません。それを求める BCLOUD-15608(英語)は 2018年から開いたままで、99票・長期のバックログです。課題に載っている回避策は、パイプラインから自分で知らせることです。たとえば after-script に atlassian/email-notify のパイプを置けば、スクリプトが通っても落ちても動きます。
IntelliJ IDEA で Bitbucket Pipelines を見る
Pipeline Inbox for Bitbucket Pipelines は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。Bitbucket Cloud の全部のリポジトリのパイプラインを IDE のツールウィンドウに並べ、ステップ、失敗したステップと止まったコマンド、Bitbucket が書くそばから伸びるステップのログを見せます。スケジュールの実行は、一覧に「定期実行」と出ます。一覧・ステップ・ログは無料。パイプラインの実行・やり直し・停止は Pro(月 US$1.50・30日の無料試用つき)。
Atlassian・Bitbucket・Bitbucket Pipelines は Atlassian の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは Atlassian・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:「Container 'build' failed to pull image」 · サービスに「Connection refused」(MySQL・PostgreSQL・Redis) · 「Not authorized to perform sts:AssumeRoleWithWebIdentity」(OIDC で AWS) · テストの結果が出ない · 変数が空になる · 「Host key verification failed」(SSH) · 「Cannot connect to the Docker daemon」 · 「authorization denied by plugin pipelines」(Docker) · 「Container 'docker' exceeded memory limit.」 · push したのに Pipelines が動かない · 「Container 'Build' exceeded memory limit.」 · 「Exceeded build time limit of 120 minutes」 · キャッシュが効かない · 「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」(デプロイ) · 浅いクローンで止まる Git のコマンド(origin/main・git describe) · Git LFS のファイルがポインターのまま届く・ステップからの LFS の push · IntelliJ IDEA の Bitbucket Pipelines 用プラグインの比較 · English