はじめに
Skipbox のしくみ
push してからジョブが終わるまでに起きること。Webhook、確認、ジョブ一つのためのランナー、新しい VM、その削除まで。
Skipbox は、Fluxenic がフィンランドのヘルシンキで動かすセルフホストランナーで、GitHub Actions のジョブを動かします。ワークフローを動かし、ログを残し、結果を見せるのはこれまでどおり GitHub です。Skipbox が用意するのは、ジョブが動くマシンだけです。
push からジョブが終わるまで
runs-onに Skipbox のラベルを指定したジョブが、GitHub で待機中になります。- GitHub が、アプリの Webhook で Skipbox に知らせます。
- Skipbox がジョブを確かめます。リポジトリはプライベートか、アカウントにプランかトライアルがあり、そのサイズのジョブをもう一つ動かす余裕があるか。余裕がなければ、ジョブは順番を待ちます。詳しくは同時実行と順番待ちへ。
- Skipbox が GitHub に、ジョブを一つだけ受け取るランナーの登録を求めます。ラベルはそのジョブと同じです。
- そのランナーを入れた新しい VM が起動し、同じラベルのジョブを一つ受け取ります。GitHub はコード、ワークフローが渡すシークレット、ジョブ用のトークンをランナーに送ります。
- ジョブが終わると、VM はディスクごと消えます。登録が残ったランナーも削除します。
変わらないこと
- ワークフロー、アクション、ログは GitHub に残ります。Skipbox がワークフローを書き換えたり push したりすることはなく、コードやログの写しも持ちません。
- ジョブを移すのは
runs-onの一行だけ。戻すのも同じ一行です。 runs-onを書き換えていないジョブは、これまでどおり GitHub のランナーで動きます。
ジョブが動く場所
ヘルシンキにある、Fluxenic が Hetzner から借りている専用サーバーと、ジョブ一つごとに作る Hetzner Cloud のサーバーです。後者の vCPU は、Hetzner のほかの利用者と共有です。ほかの地域はありません。詳しくはネットワークと外向きの通信へ。
ジョブ一つに VM 一つ
VM が動かすジョブは一つだけで、次のジョブを渡すことはありません。次のジョブは、だれかのプルリクエストから来るかもしれないからです。ジョブ一つは最長 6時間です(ジョブの時間の上限)。VM どうしを分けるしくみはVM の分離にあります。
2026年11月9日 更新