一時コンテナとしてセルフホスト型GitHub Actions runnerを実行し、自動スケーリングするKubernetes operator。
kunchenguid/runner-up
Linux、Mac、Windowsの手持ちマシンでGitHub Actionsのself-hosted runnerを運用し、ジョブごとに新しいコンテナ、VM、またはアカウントを用意します。
代替できる製品:GitHub Actions hosted runners
- スター
- 262
- フォーク
- 17
- 未解決の Issue
- 2
- 最終コミット
- 一昨日
これは何?
runner-upは、GitHubのホステッドrunnerではなく、すでに所有しているマシン上でGitHub Actionsのジョブを実行します。単一のコーディネーターがrunner scale set経由でGitHubに接続し、待機中のジョブを監視して、マシン上の空き実行枠に割り当てます。各ジョブには、Linuxでは新しいDockerコンテナまたはKVM仮想マシン、Macでは新しいtartクローンまたはApple containerのゲスト、Windowsでは新しいWindowsアカウントまたはHyper-V仮想マシンが用意され、ジョブ終了時にその環境は削除されます。実行枠ではホスト上で直接ジョブを実行することもできます。
コーディネーターはSSH経由で各マシンに接続するため、必要なのはSSHアクセスだけで、Kubernetesクラスターは不要です。各マシンのコア数とメモリを把握し、マシン所有者用のリソースを確保したうえで、リポジトリをまたいで待機中のジョブを設定可能なルールに従って順序付けします。フォークからのプルリクエストはデフォルトで拒否されます。実行中のジョブはコーディネーターの再起動後も継続し、エージェントに接続できなくなったマシンは、再び応答するまで一時停止されます。
プロジェクトはまだ新しく、プロバイダーごとの状況が記載されています。LinuxのDockerとKVM、およびMacのtartとホスト実行枠では実際のジョブが実行されていますが、Hyper-V、Apple container、Windowsアカウントの実行枠は実験的とされています。また、GitHubが引き続きプレビュー版と位置付けているrunner scale set APIに依存しています。
主な機能
- 01各ジョブを新しいDockerコンテナ、KVM VM、tartクローン、またはWindowsアカウントで実行し、終了後に削除します。
- 02Kubernetesクラスターなしで、SSH経由でマシンに接続します。
- 03各マシンのコア数とメモリを実行枠に分割し、所有者用のリソースを確保します。
- 04設定可能なルールに従って、リポジトリをまたいで待機中のジョブを順序付けします。
- 05フォークからのプルリクエストによるジョブをデフォルトで拒否します。
- 06コーディネーターの再起動後も実行中のジョブを継続します。
ユースケース
- 余っているLinuxまたはMacマシンを活用し、有料のGitHubホステッドrunnerの実行時間を置き換える。
- すでに所有しているMacで、macOSのビルドや署名ジョブを実行する。
- Kubernetesクラスターを管理せずに、オフィスや自宅のアイドル状態のPCでCIジョブを実行する。
- 自前のハードウェア上で、CIジョブごとに分離された環境を用意する。
クイックスタート
- 1
Go で runner-up をインストールする
go install github.com/kunchenguid/runner-up@latest - 2
実行対象のリポジトリと Linux pool label を選択する
runner-up init --repo you/app --pool my-linux - 3
SSH で接続できるマシンを追加する
runner-up machine add box --ssh ci@box - 4
セットアップを確認して coordinator を起動する
runner-up check-config && runner-up serve
使う前に知っておきたいこと
- coordinator は Linux と macOS でのみ実行でき、Windows では実行できません。
- Runner scale sets は GitHub 側でまだプレビュー段階のため、GitHub 側の変更によって動作しなくなる可能性があります。
- Hyper-V、Apple container、Windows account、borrowing、draining は実験的な機能であり、リリースごとに変更される可能性があります。
- プロジェクトはまだ新しく、一部の provider では実際のジョブがまだ実行されていません。
収録されている特集
トピック
よくある質問
- runner-up とは?
- Linux、Mac、Windowsの手持ちマシンでGitHub Actionsのself-hosted runnerを運用し、ジョブごとに新しいコンテナ、VM、またはアカウントを用意します。 runner-upは、GitHubのホステッドrunnerではなく、すでに所有しているマシン上でGitHub Actionsのジョブを実行します。単一のコーディネーターがrunner scale set経由でGitHubに接続し、待機中のジョブを監視して、マシン上の空き実行枠に割り当てます。各ジョブには、Linuxでは新しいDockerコンテナまたはKVM仮想マシン、Macでは新しいtartクローンまたはApple containerのゲスト、Windowsでは新しいWindowsアカウントまたはHyper-V仮想マシンが用意され、ジョブ終了時にその環境は削除されます。実行枠ではホスト上で直接ジョブを実行することもできます。
- runner-up は無料で使えますか?ライセンスは?
- runner-up は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- runner-up は今もメンテナンスされていますか?
- 活発にメンテナンス中。runner-up の最終コミットは 2026年11月6日 です。
- runner-up は何に使えますか?
- 余っているLinuxまたはMacマシンを活用し、有料のGitHubホステッドrunnerの実行時間を置き換える。 すでに所有しているMacで、macOSのビルドや署名ジョブを実行する。 Kubernetesクラスターを管理せずに、オフィスや自宅のアイドル状態のPCでCIジョブを実行する。 自前のハードウェア上で、CIジョブごとに分離された環境を用意する。
- runner-up のインストール方法は?
- Go で runner-up をインストールする: go install github.com/kunchenguid/runner-up@latest 実行対象のリポジトリと Linux pool label を選択する: runner-up init --repo you/app --pool my-linux SSH で接続できるマシンを追加する: runner-up machine add box --ssh ci@box セットアップを確認して coordinator を起動する: runner-up check-config && runner-up serve
- runner-up はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/kunchenguid/runner-up
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
WindowsをDockerコンテナ内で自動ダウンロード・無人インストールし、ブラウザーまたはRDPから利用できます。
OSイメージを自動ダウンロードし、最適化された仮想マシンを起動するQEMUラッパー。
Apple Silicon向けのセルフホスト型macOS CIアプリ。GitHub Actions、Buildkite、GitLab Runner、カスタムスクリプト用に一時的な仮想マシンを実行します。
DockerまたはPodmanコンテナ内でWindowsアプリを実行し、Linux上でネイティブのデスクトップウィンドウとして表示するElectronアプリ。
セキュアなマルチテナントのサーバーレスやコンテナワークロード向けに、軽量なmicroVMを実行するミニマルなKVMベースの仮想マシンモニター。