Bitbucket Pipelines の「Currently no online runner available that matches the required labels.」
runs-on のあるステップが、すぐにこのメッセージで失敗します。こうしたステップのために Pipelines は、online で、このリポジトリかそのワークスペースのもので、ステップが並べたラベルを全部持つセルフホストのランナーを探します。合うランナーが使用中なだけならステップは待ち、1つも無いと失敗します(Atlassian の Configure your runner in bitbucket-pipelines.yml)。ずれているのは、ラベル・ランナーの状態・ランナーを足した場所のどれかです。
1. 1つのランナーが全部のラベルを持つ
ランナーを足すと、Bitbucket は self.hosted と、その台の種類のラベルを付けます。独自のラベルは、自分で入れたものです(Atlassian の記事 Currently no online runner available that matches the required labels と Adding a new runner):
- Linux のシェル:
self.hosted・linux.shell - Linux の Docker:
self.hosted・linux(ARM はlinux.arm64) - Windows:
self.hosted・windows - macOS:
self.hosted・macos
ステップの runs-on には self.hosted が要ります。種類のラベルが無いと、Pipelines はそのステップを Linux の Docker のステップとみなします。Linux のシェルのランナー向けのステップで linux.shell を抜かすと、Docker のランナーを探して見つかりません。ラベルは全部、同じ1つのランナーにある必要があります。半分ずつ持つランナーが2つあっても数えられません。
- step:
runs-on:
- self.hosted
- linux.shell
- build.fast
script:
- ./build.sh
この並びを、Runners の画面のそのランナーの行のラベルと見比べます。ラベルに使えるのは小文字の英字・数字・ドットだけで、独自のラベルは1つのランナーに10個までです。
2. ランナーが online になっている
Runners の画面に、ランナーごとの状態が出ます。足しただけで動かしていないランナーは Unregistered のままです。Atlassian は、足したときに出たコマンドを動かし、Online になるのを待つように書いています。Bitbucket がそのコマンドを見せるのは1回だけなので、取っておきます。マシンやサービスが止まった後にランナーを動かし直すのも、そのコマンドです。ステップの後片付けができずに Unhealthy になったランナーは、先にそれを直します(「We couldn't clone the repository」に場合ごとに書きました)。
3. このリポジトリかそのワークスペースのランナーである
リポジトリのランナーは、リポジトリの Settings、Pipelines、Runners で足すもので、そのリポジトリでしか動きません。ワークスペースのランナーは、Workspace settings、Pipelines、Workspace runners で足すもので、そのワークスペースの全部のリポジトリで動きます。ランナーが online でラベルも合っていたコミュニティの質問で、Atlassian の担当者が尋ねたのはこの2つでした:ワークスペースのランナーを、リポジトリの住所(bitbucket.org/<ワークスペース>/<リポジトリ>)のワークスペースで作ったか。リポジトリのランナーを、別のリポジトリではなくこのリポジトリに作ったか。
変数で書いたラベル
$runner と書いたラベルは、ステップが始まる前に断られます:Only alphanumeric characters and dots can be used in runs-on labels.(BCLOUD-21510)。Atlassian はこの要望を、YAML のテンプレート ${{ NAME }}(保護されていないワークスペースとリポジトリの変数)を示して閉じました(Variables and secrets)。そのページは runs-on の名前を挙げておらず、私たちも runs-on では試していません。
こうして失敗したステップは、Atlassian のマシンでは動いていません。別の質問で Atlassian の担当者は、こうしたビルドはワークスペースのビルドの分数を使わずに失敗すると書いています。
IntelliJ IDEA で失敗したステップを見る
Pipeline Inbox for Bitbucket Pipelines は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。Bitbucket Cloud の全部のリポジトリのパイプラインを、ステップと一緒に IDE のツールウィンドウに並べます。失敗したパイプラインでは理由を見せます:Bitbucket がステップを終わらせたときはその理由、そうでなければ失敗したコマンドとその最後の行。プロジェクトに bitbucket-pipelines.yml があればエディタで開くので、runs-on の行を直せます。ファイルでなくランナーを直したなら、push する新しいコミットがありません。Pro なら Run again で、同じコミットを IDE からもう一度ビルドできます。一覧・ステップ・ログは無料。実行・やり直し・停止は Pro(月 US$1.50・30日の無料試用つき)。
Atlassian・Bitbucket・Bitbucket Pipelines は Atlassian の商標、Docker は Docker, Inc. の商標、Windows は Microsoft グループの商標、macOS は Apple Inc. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページはそのいずれとも提携しておらず、承認も受けていません。
ほかに:「We couldn't clone the repository」 · サブモジュールを取ってこない · 「command not found」 · 「unexpected system error」 · キャッシュが効かない · push したのに Pipelines が動かない · 「Exceeded build time limit of 120 minutes」 · 「Container 'Build' exceeded memory limit.」 · 「Container 'docker' exceeded memory limit.」 · 「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