# Skipbox のしくみ

> push してからジョブが終わるまでに起きること。Webhook、確認、ジョブ一つのためのランナー、新しい VM、その削除まで。

Skipbox は、Fluxenic がフィンランドのヘルシンキで動かすセルフホストランナーで、GitHub Actions のジョブを動かします。ワークフローを動かし、ログを残し、結果を見せるのはこれまでどおり GitHub です。Skipbox が用意するのは、ジョブが動くマシンだけです。

## push からジョブが終わるまで

1. `runs-on` に Skipbox のラベルを指定したジョブが、GitHub で待機中になります。
2. GitHub が、アプリの Webhook で Skipbox に知らせます。
3. Skipbox がジョブを確かめます。リポジトリはプライベートか、アカウントにプランかトライアルがあり、そのサイズのジョブをもう一つ動かす余裕があるか。余裕がなければ、ジョブは順番を待ちます。詳しくは[同時実行と順番待ち](https://docs.skipbox.dev/ja/concurrency)へ。
4. Skipbox が GitHub に、ジョブを一つだけ受け取るランナーの登録を求めます。ラベルはそのジョブと同じです。
5. そのランナーを入れた新しい VM が起動し、同じラベルのジョブを一つ受け取ります。GitHub はコード、ワークフローが渡すシークレット、ジョブ用のトークンをランナーに送ります。
6. ジョブが終わると、VM はディスクごと消えます。登録が残ったランナーも削除します。

## 変わらないこと

- ワークフロー、アクション、ログは GitHub に残ります。Skipbox がワークフローを書き換えたり push したりすることはなく、コードやログの写しも持ちません。
- ジョブを移すのは `runs-on` の一行だけ。戻すのも同じ一行です。
- `runs-on` を書き換えていないジョブは、これまでどおり GitHub のランナーで動きます。

## ジョブが動く場所

ヘルシンキにある、Fluxenic が Hetzner から借りている専用サーバーと、ジョブ一つごとに作る Hetzner Cloud のサーバーです。後者の vCPU は、Hetzner のほかの利用者と共有です。ほかの地域はありません。詳しくは[ネットワークと外向きの通信](https://docs.skipbox.dev/ja/network)へ。

## ジョブ一つに VM 一つ

VM が動かすジョブは一つだけで、次のジョブを渡すことはありません。次のジョブは、だれかのプルリクエストから来るかもしれないからです。ジョブ一つは最長 6時間です（[ジョブの時間の上限](https://docs.skipbox.dev/ja/job-time-limit)）。VM どうしを分けるしくみは[VM の分離](https://docs.skipbox.dev/ja/isolation)にあります。

2026-11-09 更新 · https://docs.skipbox.dev/ja/how-it-works
