Skipbox
ページ一覧Skipbox のしくみ

はじめに

Skipbox のしくみ

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

Markdown で表示

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

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

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

変わらないこと

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

ジョブが動く場所

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

ジョブ一つに VM 一つ

VM が動かすジョブは一つだけで、次のジョブを渡すことはありません。次のジョブは、だれかのプルリクエストから来るかもしれないからです。ジョブ一つは最長 6時間です(ジョブの時間の上限)。VM どうしを分けるしくみはVM の分離にあります。

2026年11月9日 更新