GitHub Actions の同時実行数の上限:PR が集中するとジョブが詰まる理由と、同時に動かせる数を増やす方法
GitHub ホストランナーで同時に動かせるジョブの数は、アカウントごとに決まっています。GitHub Free は 20、Pro は 40、Team は 60、Enterprise は 500。すべてのリポジトリとワークフローを合わせた数なので、プルリクエストが集中する時間帯には、上限を超えたジョブが前のジョブの終わりを待つことになります。Enterprise に上げなくても、打てる手はあります。GitHub サポートに上限の引き上げを頼む、古い実行を止める、そして上限に数えられない場所、つまりセルフホストランナーでジョブを動かすことです。
Skipbox は、自分で運用しなくていいセルフホストランナーです。Skipbox のジョブは GitHub ホストの上限に数えられず、アカウント専用のマシンで動きます。料金は月 6,000 円の定額で、実行時間は無制限。時間のかかるジョブを runs-on: skipbox の 1行で移せば、そのジョブがふさいでいた枠が、ほかのジョブに空きます。
GitHub の同時実行数の上限
GitHub のActions の上限のページ(2026年11月14日に確認)から。
| GitHub のプラン | 標準ランナーで同時に動くジョブ | そのうち macOS | より大きなランナーで同時に動くジョブ |
|---|---|---|---|
| Free | 20 | 5 | 使えない |
| Pro | 40 | 5 | 使えない |
| Team | 60 | 5 | 1,000 |
| Enterprise | 500 | 50 | 1,000 |
- 上限はリポジトリごとではなく、アカウントごとです。すべてのリポジトリのすべてのワークフローが、同じ数を分け合います。
- マトリクスは、展開したジョブの 1つずつを数えます。1回の実行で 256 ジョブまで作れます。
- 上限を超えたジョブは、失敗しません。キューに入ったまま、動いているジョブが終わるのを待ちます。
- これは GitHub ホストランナーの上限です。セルフホストランナーのジョブは入りません。
なぜ忙しい時間帯だけ詰まるのか
GitHub Team の枠は 60 です。プルリクエスト 1つで lint、ユニットテスト、ビルド、8 分割の E2E テストが動けば、それだけで 11 の枠を使います。同じ 10分のあいだに 6つのプルリクエストに push があれば 66。最後のいくつかは待たされます。
AI のコーディングエージェントは、この時間帯を長くします。エージェントは直すたびに push し、push のたびにワークフローが最初から走ります。前の push の実行も、まだ枠をふさいだままです。
Enterprise に上げずにできること
| 方法 | 変わること | かかるもの |
|---|---|---|
| サポートにチケットを出す | GitHub の上限のページのとおり、サポートはジョブの同時実行数の上限を引き上げられます | 返事を待つ時間。分課金はそのまま |
concurrency と cancel-in-progress: true | 新しい push が前の push の実行を止めるので、プルリクエスト 1つが使う枠は 1回ぶんになる | なし。分数も減ります |
| より大きなランナー | 上限が別になる(Team で 1,000) | 4コアで 1分 $0.012。標準ランナーは $0.006 |
| セルフホストランナー | GitHub ホストの上限の外。同時に動かす数は自分で決める | GitHub の請求は 0。サーバーの運用は自分 |
| Skipbox | セルフホストと同じ。サーバーの運用は Skipbox | S で月 6,000 円の定額、実行時間は無制限 |
concurrency は、どの方法を選んでも、プルリクエストのワークフローに入れておく価値があります。
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
同じプルリクエストの同じワークフローの古い実行だけを止め、ほかのブランチへの push は止めません。
Skipbox なら、重いジョブがキューから出ていく
枠を長くふさぐのは、時間のかかるジョブです。Docker のビルド、E2E テスト、モノレポの全テスト。これを Skipbox に移すと、3つのことが変わります。
上限に数えられなくなる。 GitHub から見ると、Skipbox のジョブはセルフホストランナーのジョブです。20・40・60 の枠を 1つも使わないので、GitHub に残した短いジョブはすぐに始まります。
早く終わる。 プランごとに、アカウント専用のマシンが付き、ジョブのあとも残ります。Docker のイメージ、レイヤー、ビルドキャッシュ、パッケージのキャッシュ、入れたツールが、次のジョブが始まるときにはディスクにあります。新しい VM が毎回くり返すダウンロードがなくなります。
請求が毎月同じ。 実行時間は無制限です。忙しい週があっても、月額は変わりません。
Skipbox で同時に動くジョブの数は、プランの vCPU で決まります。決めるのは自分です。
| プラン | マシン | 同時に動かせる枠 | 月額 |
|---|---|---|---|
| S | 4 vCPU・メモリ 16 GB | 4 vCPU | 6,000 円 |
| M | 8 vCPU・メモリ 16 GB | 8 vCPU | 12,000 円 |
| L | 16 vCPU・メモリ 32 GB | 16 vCPU | 23,000 円 |
ジョブは、持っているプランの vCPU の合計に収まるあいだ、同時に動きます。プランはいくつでも、どの組み合わせでも持てます。収まらないジョブは順番を待ち、動いているジョブが終わると始まります。待っても料金は増えません。待っているジョブの数と時間は、アカウントのページに出ます。くわしくは同時実行と順番待ちにあります。
同じ分数でいくらになるか
より大きなランナーは、1分の単価を上げて上限を外します。定額のプランなら、メーターなしで外せます。
| 月の実行時間(4 vCPU) | GitHub | Skipbox S | 毎月の差額 |
|---|---|---|---|
| 10,000分 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 | 6,000 円 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 |
| 20,000分 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 | 6,000 円 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 |
| 30,000分 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 | 6,000 円 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 |
GitHub の額は、GitHub Team に含まれる無料分を引いたあとの請求です。自分のチームの分数で計算するなら、トップページの料金計算に入れてください。
移行は runs-on を 1行書き換えるだけ
jobs:
e2e:
runs-on: skipbox # ubuntu-latest から書き換える
steps:
- uses: actions/checkout@v4
- run: npm ci && npm run test:e2e
- Skipbox に GitHub でログインする
- Skipbox の GitHub アプリを入れて、使うリポジトリを選ぶ
- 時間のかかるジョブの
runs-onを書き換えて push する
ほかのジョブは ubuntu-latest のままで、GitHub ホストの枠をそのまま使えます。
セキュリティ
- マシンはアカウントごとの専用です。ほかの会社のジョブと同じマシンで動くことはありません。
- ジョブが終わるたびに、ランナーの認証情報、プロセスとコンテナを消します。「毎回クリーン」なら、ジョブごとに新しいマシンで動きます。
- 書き込み権限のない人のコード(フォークからのプルリクエストなど)は、使い捨ての新しいマシンで動きます。
くわしくはジョブの分離のしくみにあります。
次に混む時間帯で試す
カード不要で、7日間かジョブの合計 3,000分まで無料です。枠をいちばん長くふさいでいるジョブを runs-on: skipbox に替えて、次に混む午後のキューを見てください。
よくある質問
PR が集中すると GitHub Actions のジョブが詰まって待たされる。同時実行数を増やす方法は?
方法は 4つあります。GitHub サポートにチケットを出して上限を上げてもらう。concurrency と cancel-in-progress で古い実行を止め、プルリクエスト 1つが使う枠を 1回ぶんにする。上限が別(Team で 1,000)のより大きなランナーに移す。ただし分課金です。そして、上限に数えられないセルフホストランナーに移す。Skipbox は運用の要らないセルフホストランナーで、月 6,000 円の定額。ジョブの runs-on を 1行書き換えるだけで移せます。
GitHub Actions で同時に実行できるジョブはいくつまで?
GitHub ホストの標準ランナーでは、GitHub Free が 20、Pro が 40、Team が 60、Enterprise が 500 です。リポジトリごとではなく、アカウント全体で数えます。そのうち macOS のジョブは 5つまで(Enterprise は 50)。より大きなランナーの上限は別で、Team と Enterprise で 1,000 です。上限を超えたジョブは、動いているジョブが終わるまで待ちます。
Enterprise に上げずに、同時実行数の上限を回避できる?
できます。GitHub の上限のページには、サポートがジョブの同時実行数の上限を引き上げられると書いてあります。もう 1つは、上限に数えられない場所でジョブを動かすことです。セルフホストランナーのジョブは GitHub ホストの上限の外なので、重いジョブを Skipbox に移すと、そのぶんの枠が GitHub に残したジョブに空きます。
セルフホストランナーのジョブは、同時実行数の上限に数えられる?
数えられません。GitHub の上限のページにあるのは GitHub ホストランナーの上限です。セルフホストランナーで同時に動くジョブの数は、オンラインのランナーの数で決まり、ランナー 1つにつき 1ジョブです。Skipbox ではプランの vCPU で決まります。S は 4 vCPU のジョブを 1つずつ動かし、プランを足すと同時に動く数が増えます。
Skipbox では、同時にいくつのジョブが動く?
持っているプランの vCPU の合計に収まるだけ動きます。S は 4 vCPU、M は 8 vCPU、L は 16 vCPU で、プランはいくつでも、どの組み合わせでも持てます。収まらないジョブは順番を待ち、動いているジョブが終わると始まります。待っても料金は増えず、待っているジョブの数と時間はアカウントのページで見られます。
試すのにお金はかかる?
かかりません。カード不要で、7日間かジョブの合計 3,000分まで無料です。いちばん時間のかかるジョブの runs-on を skipbox に書き換えて push してください。
2026年11月14日 更新