GitHub Actions:「Waiting for a runner to pick up this job」
ジョブは順番待ちに入っていて、まだどのランナーも受け取っていません。画面には理由が出ません。GitHub の文書にある原因を、多い順に並べます。runs-on のラベル、ランナーそのもの、プランの同時実行の上限、ランナーグループです。セルフホストのランナーを待つジョブは、24時間でキャンセルされます。
1. ラベルを全部持つランナーが無い
セルフホストのランナーでは、runs-on にラベルの一覧を書き、ジョブは「指定したラベルを全部持つランナー」に回されます(ジョブのランナーの選び方):
runs-on: [self-hosted, linux, x64, gpu]
- ラベルが1つ多い、または綴りが違うと、当てはまるランナーが無く、キャンセルされるまで待ち続けます。
--no-default-labelsを付けて登録したランナーにはself-hostedのラベルがありません。Actions Runner Controller もこのラベルに対応していません。- 自分のラベルには重ならない名前を、と GitHub は勧めています。GitHub が用意したラベルと同じ名前だと、どのランナーがジョブを取るかの保証がありません(ワークフローのトラブルシューティング)。
2. ランナーが Offline か、ふさがっている
リポジトリか組織の Settings > Actions > Runners に、セルフホストのランナーがラベルと状態つきで並びます(セルフホストのランナーの見張り方):
- Idle:つながっていて、受け取れる。
- Active:ジョブを実行中。次のジョブは、それかほかのランナーを待ちます。
- Offline:GitHub につながっていない。マシンが止まっている、ランナーのアプリが動いていない、GitHub に届かない、のどれかです。マシンの
_diagのログでわかります。
3. プランの同時実行の上限
GitHub のランナーで同時に動くジョブの数は、アカウントごとに決まっていて、残りは待ちます(Actions の上限):
- 標準のランナー:同時に Free は 20、Pro は40、Team は60、Enterprise は500ジョブ。
- macOS:Free・Pro・Team は同時に 5(Enterprise は50)。大きい macOS のランナーと合わせた数です。
- 大きなマトリックスや、たくさんのリポジトリの同時の push で、すぐに届きます。
strategy.max-parallelやconcurrencyで、1つのワークフローが全部を取らないようにできます。上限は GitHub Support が上げられます。
4. リポジトリが使えないランナーグループ
組織のランナーはランナーグループに入っていて、グループはアクセスを与えられたリポジトリ(Repository access:全部か、選んだリポジトリ)だけに使われます。与えられていないリポジトリは、そのランナーを使えません。セルフホストのランナーはプライベートのリポジトリだけで使うよう、GitHub は勧めています。
5. 混雑と、24時間の上限
- 毎時0分は混む時間で、スケジュールのワークフローが遅れたり、順番待ちのジョブが落とされたりすることがあります。
scheduleは別の分にずらすよう GitHub は勧めています。 - セルフホストのランナーを待つジョブは、順番待ちが 24時間を超えるとキャンセルされます。
- 障害かどうかは GitHub Status で。
IntelliJ IDEA から順番待ちの実行を見るなら
Pipeline Inbox for GitHub Actions Workflows は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。すべてのリポジトリの実行を、ジョブ・ステップと一緒に IDE のツールウィンドウに並べるので、ほかが動いたのに待ったままのジョブがひと目でわかり、いまのブランチの実行はステータスバーに出ます。ランナーが来ない実行は IDE からキャンセルできます。読むのは無料、再実行・キャンセル・ワークフローの実行・デプロイのレビューは Pro(月 US$1.50・30日間の無料試用つき)です。画面は日本語です。
GitHub と GitHub Actions は GitHub, Inc. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは GitHub, Inc.・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:止まらない実行をキャンセルする · デバッグログ付きでジョブを再実行する · 「Waiting」でレビューを待つデプロイを承認する · IntelliJ IDEA で使える GitHub Actions のプラグインの比較 · English