Repolode
kunchenguid

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. 1

    Go で runner-up をインストールする

    go install github.com/kunchenguid/runner-up@latest
  2. 2

    実行対象のリポジトリと Linux pool label を選択する

    runner-up init --repo you/app --pool my-linux
  3. 3

    SSH で接続できるマシンを追加する

    runner-up machine add box --ssh ci@box
  4. 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 の数値は毎日更新されます。

関連プロジェクト