CIランナーホスティング
回答
セルフホスト型CIランナーは、プロバイダーの共有プールではなく、自分で管理するサーバー上でビルドパイプラインを実行します。月額14ドルのIncognito VPS VECTORプランは、通常、ホスト型ランナーを上回る性能を発揮し、分単位の課金や待ち時間を完全に排除します。
| シナリオ | 最小 |
|---|---|
| 小規模プロジェクト | 2 vCPU、4 GB RAM |
| 標準的なモノレポ | 6 vCPU、16 GB RAM |
| ヘビーなコンパイル(Rust、C++) | 16 vCPU、64 GB RAM |
| Dockerレイヤーキャッシュ | 140 GB以上のNVMe |
計算が決定的な要因になることが多い
ホスト型CIの分単位課金は、数えなければ安く見えます。月に数百回のビルドを2コアのホスト型ランナーで実行しているチームは、6コアの専用VPSのコストを routinely 超える出費をしており、しかもホスト型ランナーは負荷がかかると遅くなるため、同じ金額でより遅いビルドを得ていることになります。
もう一つの節約は時間です。セルフホスト型ランナーにはキューがなく、プッシュするとすぐにジョブが開始されます。混雑したホスト型プールでは、ランナーが使用可能になるまで数分待つのが普通で、その遅延はすべての開発者とすべてのプッシュに影響します。
本当の高速化はキャッシュにあります
永続的なローカルNVMeは、コア数よりもCIの経済性を大きく変えます。Dockerレイヤー、Cargoレジストリ、node_modules、Gradleキャッシュ、ccacheはすべてセルフホスト型ランナーでは実行間で保持されますが、ホスト型ランナーはクリーンな状態から始まり、すべてを再ダウンロードします。
大規模なRustやC++プロジェクトでは、これによりウォールクロック時間が5〜10倍短縮されることがよくあり、しかも完全に無料です。
分離について(ランナーは任意のコードを実行するため)
セルフホスト型ランナーはパイプラインの内容を実行します。パブリックリポジトリの場合、コントリビューターがプルリクエストに入れたものを実行します。パブリックリポジトリにセルフホスト型ランナーを、一時的かつ分離された環境なしで接続しないでください。
コンテナや短命なVMで一時的なランナーを使用し、不要な資格情報を与えず、他に何もないサーバーに配置してください。プロジェクトごとに14ドルのマシンは、パイプラインが侵害されて他のインフラに到達するのを防ぐための安価な保険です。
よくある質問
01 CIランナーにはどのプランが適していますか?
典型的なプロジェクトにはVECTOR(4 vCPU、8 GB)、モノレポやヘビーなコンパイルにはBASTION(6 vCPU、16 GB)です。ほとんどのパイプラインでは、コア数よりも永続的なNVMeキャッシュが重要です。
02 GitHub Actionsで動作しますか?
はい。マシンをセルフホスト型ランナーとして登録し、runs-onで指定します。GitLab、Forgejo、Woodpecker、Droneも同様に動作します。
03 セルフホスト型ランナーはパブリックリポジトリで安全ですか?
エフェメラルな分離がない限り安全ではありません。プルリクエストはランナー上で任意のコードを実行できます。エフェメラルコンテナや使い捨てVMを使用し、パイプラインが不要な資格情報を決して付与しないでください。
04 どれくらい速くなりますか?
通常、生の計算で2〜4倍、キャッシュが多いパイプラインでは5〜10倍です。Dockerレイヤーや依存関係キャッシュが再ダウンロードされずに保持されるためです。
関連