コンテンツにスキップ

セルフホストランナー

セルフホストランナーは、Subaya のビルドを Subaya クラウドではなく自分が管理するマシン上で 実行する小さなエージェント subaya-runner です。ツールチェーンがそのマシンにすでに インストールされている場合(たとえばライセンス済みの Quartus)や、ビルドを自分の ハードウェア上で行う必要がある場合に使用します。

ランナーはセキュアな WebSocket で Subaya へ外向きに接続します。受信ポート、VPN、 パブリック IP はいずれも不要です。Subaya はその接続を通じてビルドをランナーへ送ります。

ランナーは、自身の組織のビルドを、その組織のプロジェクトからプラットフォームが導出したコマンドで実行します。ビルドは、あなたが所有するマシン上でランナーの権限で実行されます — GitHub のセルフホストランナーと同じ信頼モデルです。サンドボックスではありません。

  • x86_64 上の Linux。その他のプラットフォームは今後対応予定です。
  • subaya-dev.com への外向き HTTPS(ポート 443)。
  • ビルドに必要なツールが、ランナーを実行するユーザーの PATH 上にインストール済みであること。 ランナーは見つけたものを報告するだけで、何もインストールしません。
  • 任意: レシピがコンテナイメージを指定するビルド用の Docker または Podman。

コンソールで Settings → Runners を開き、Add runner を選択します。ランナーに名前を 付けると、Subaya は一回限りの登録トークンが埋め込まれた 3 つのコマンドを表示します。 トークンは一度だけ使用でき、1 時間で失効します。

ランナーをダウンロードして展開します:

Terminal window
curl -fsSL -o subaya-runner.tar.gz https://subaya-dev.com/cli/runner/latest/subaya-runner_linux_amd64.tar.gz && tar xzf subaya-runner.tar.gz

設定します。これにより登録トークンがランナー自身の認証情報と交換され、マシンの外に 出ることのない鍵ペアが生成されます:

Terminal window
./subaya-runner configure --url https://subaya-dev.com --token srt_... --name 'lab-quartus-01'

フォアグラウンドで実行します:

Terminal window
./subaya-runner run

再起動後も動作させ続けるには、代わりに systemd サービスとしてインストールします:

Terminal window
./subaya-runner install-service

自分のユーザーで実行すると systemd のユーザーサービスとして、root で実行するとシステム全体のサービスとしてインストールされます。ユーザーサービスは、アカウントで lingering を有効にしない限りログアウト時に停止します:

Terminal window
sudo loginctl enable-linger "$USER"

数秒以内に、ランナーは検出したツールとバージョンとともに Settings → Runners で online と表示されます。

--runner で名前を指定してランナーをターゲットにします:

Terminal window
suya build <app> --source . --runner lab-quartus-01 --wait

Subaya は、ビルドを受け付ける前に、ビルドに必要なすべてのツールをランナーが報告して いることを確認します。ランナーがオフラインの場合、ビルドはキューで待機し、ランナーが 再接続すると開始されます。

ビルドの開始時に、ランナーは実測したツールチェーンを正確に報告します: 各ツールの バージョン文字列、パス、バイナリの SHA-256 です。実行に記録されるのは、プロジェクトが 要求したものではなく、この実測されたツールチェーンです。

プロジェクトがツールのバージョンを明示的に固定しており(たとえば suya tools set quartus-pro 26.1.1)、ランナーにインストールされたバージョンがその固定と 一致しない場合、ビルドは拒否され toolchain_pin_mismatch で失敗します。何も実行されません。 明示的な固定がなければ、ランナーにインストールされたバージョンが使われます。

Settings → Runners で、対象ランナーの Revoke を選択します。失効は即座に反映されます: ランナーの認証情報は機能しなくなり、接続は切断され、以降のビルドは送られず、実行中の ビルドは失敗します。失効は取り消せません — そのマシンを再び使うには、新しいランナーとして 追加し、新しいトークンで ./subaya-runner configure --replace を実行してください。

マシンからサービスも削除するには:

Terminal window
./subaya-runner uninstall-service

ランナーがオフラインと表示される。 プロセスまたはサービスが動作していること、そして マシンがポート 443 で subaya-dev.com に到達できることを確認します:

Terminal window
./subaya-runner status

ランナーはネットワークが切れた後、自動的に再接続します。接続が切れた時点で実行中だった ビルドは runner_disconnected で失敗するので、もう一度実行してください。

ランナーが「upgrade required」で終了する。 ランナーが Subaya の受け付ける最小 バージョンより古くなっています。上記のダウンロードコマンドで最新リリースを取得し、 バイナリを置き換えて再度起動してください。設定は保持されます。

ビルドが 422 runner_missing_tool で拒否される。 ビルドに必要なツールをランナーが 報告していません。ツールをインストールし、ランナーの PATH 上にあることを確認してから、 ツールチェーンを再報告させるためにランナーを再起動してください。エラーには不足している ツール名が含まれます。

登録トークンが拒否される。 トークンは一回限りで、1 時間で失効します。Add runner で 新しいトークンを作成してください。