Skip to content

GitHub Actionsで「Waiting for a runner to pick up this job」エラーの解決方法

問題の概要

GitHub Actionsを使用している際に、「Waiting for a runner to pick up this job」というメッセージが長時間表示され、ワークフロージョブが開始されない問題に直面することがあります。このエラーは、GitHub Actionsがワークフローを実行するための実行環境(ランナー)を適切に見つけられない場合に発生します。

ランナーとは?

GitHub Actionsにおける「ランナー」とは、ワークフロー内のジョブを実行するマシンまたは環境のことです。ランナーはリポジトリをクローンし、必要なソフトウェアをインストールし、コードを評価するコマンドを実行します。

ランナーの種類

主に2種類のランナーがあります:

  • GitHubホステッドランナー: GitHubが管理する事前構成済み環境
  • セルフホステッドランナー: ユーザー自身が管理するカスタム環境

それぞれの特徴については後述の詳細セクションで説明します。

主な原因と解決策

1. 非サポートOSの指定 (最も一般的)

古いまたはサポート終了したOSを指定している場合、ランナーが見つからずに待機状態になります。

yaml
# 非推奨・2025年4月以降サポート終了
runs-on: ubuntu-20.04

# 推奨・最新のサポートOSを使用
runs-on: ubuntu-latest

重要

GitHubは定期的にOSイメージのサポートを終了します。現在サポートされているOSについてはGitHub公式ドキュメントを確認してください。

2. タイポや構文エラー

runs-on の値にスペルミスがあると、GitHubはその名前のランナーが存在すると仮定し、永遠に待機します。

yaml
# 誤った例 (タイポ)
runs-on: ubuntu-latast  # "latest"の誤り
runs-on: self-hosted    # セルフホステッド環境がない場合

# 正しい例
runs-on: ubuntu-latest
YAML構文の注意点
  • インデントはスペース2つまたは4つで統一(混在不可)
  • コロンの後にスペースが必要
  • 環境名は正確に記述

3. ランナーの可用性問題

一時的なGitHub側の問題や、ランナーのリソース不足が原因の場合があります。

解決方法:

  • ジョブをキャンセルして再実行する
  • GitHub Statusで障害状況を確認する
  • 数分待ってから再試行する

4. セルフホステッドランナーの設定問題

セルフホステッドランナーを使用している場合:

bash
# ランナーを再起動
./svc.sh stop
./svc.sh start

確認事項:

  • ランナーが正しく登録されているか
  • リポジトリへのアクセス権限があるか
  • ネットワーク接続が正常か

5. 環境設定と権限問題

environment 設定や権限の問題で一時停止する場合があります。

yaml
jobs:
  deploy:
    runs-on: ubuntu-latest
    environment: production  # この設定が問題を引き起こす可能性あり
    steps:
      - ...

セルフホステッド vs GitHubホステッドランナー

GitHubホステッドランナー

  • ✅ GitHubが完全管理
  • ✅ 設定が不要
  • ✅ 定期的に更新されるプリインストールソフトウェア
  • ❌ ローカルリソースに直接アクセス不可
  • ❌ カスタムソフトウェアの制限

セルフホステッドランムナー

  • ✅ ローカルリソースへのアクセス可能
  • ✅ カスタムソフトウェアと設定
  • ✅ 環境の完全な制御
  • ❌ セットアップとメンテナンスが必要
  • ❌ セキュリティリスクの可能性

トラブルシューティングチェックリスト

  1. OSの指定を確認 - ubuntu-latest などのサポートされているOSを使用
  2. スペルチェック - runs-on の値にタイポがないか確認
  3. GitHub Status確認 - プラットフォーム全体の問題がないか確認
  4. 再実行 - ジョブをキャンセルして再実行
  5. ランナー登録確認 - セルフホステッドの場合、正しく登録されているか確認
  6. 権限確認 - リポジトリへの適切なアクセス権限があるか確認
  7. YAML構文確認 - インデントや構文エラーがないか確認

プロアクティブな対策

  • 定期的にワークフローファイルを更新し、サポート終了予定のOSを使用していないか確認
  • 重要なワークフローの場合は、セルフホステッドランナーのバックアップを検討
  • モニタリングを設定し、長時間待機中のジョブを自動検出

まとめ

「Waiting for a runner to pick up this job」エラーは主に、非サポートOSの指定、タイポ、一時的なプラットフォーム問題、または設定誤りによって発生します。基本的なチェックから始め、系統的なトラブルシューティングを行うことで、ほとんどの場合の問題を解決できます。

最新のサポート情報とベストプラクティスについては、常にGitHub公式ドキュメントを参照することをお勧めします。