自分のコンピューターをビルド エージェントとしてボランティアできる無料またはオープン ソースのビルド システムはありますか? 私はそれに遭遇したことはありませんが、私はそれのアイデアが好きです.
ゴール
サポートされているすべてのプラットフォーム (Windows、MacOS X、Linux) で個別にビルドする必要がある特定のオープン ソース プロジェクト用に、継続的インテグレーション (または少なくとも夜間) ビルド システムをセットアップします。
要件
- 任意のユーザーが自分のコンピューターをビルド システムの新しいビルド エージェントとして志願できるようにします。
- Windows、MacOS X、および Linux システムをビルド エージェントとしてサポートします (ビルド定義が適切にサポートしている場合)。
- 結果のビルド出力 (通常はバイナリ実行可能ファイルまたはライブラリ) を中央の場所に戻すことができます。
- ビルド システムは、ボランティア エージェントがビルド定義を実行できるかどうかを確認するか、実行に必要なツールを自動的にインストールできます。
- 新しいコミット (変更) について GitHub (または任意の URL) を監視して、利用可能なビルド エージェントへのビルド プッシュを開始できます。
- 必要なタイプのビルド エージェントが利用できない場合、ビルドは処理されるまでキューに入れられたままになります (ただし、数日後にキューから削除される可能性があります)。
アマゾン ウェブ サービスの無料利用枠を使用していくつかの Amazon EC2 インスタンスを設定することで、これらのほとんどを達成できることはわかっていますが、
- 12か月間のみ無料です
- MacOS X インスタンスは提供していません
思いついたところ
- jQuery のTestSwarm : TestSwarm は、複数のブラウザーで JavaScript テストを実行するための分散 CI セットアップです。利用可能なブラウザは、ブラウザを「スウォームに参加」することを自発的に申し出るユーザーによって提供されます (本質的には、スウォームにキャプチャ/接続され、指定されたテスト スイートをオンデマンドで実行するためのディレクティブを受け取ることができます)。
- スタンフォード大学のFolder@Homeソフトウェアやバークレー大学のBOINCインフラストラクチャ プログラムなどの分散コンピューティング プロジェクト。
- Microsoft の Team Foundation Server (TFS) チーム ビルド: 私は一般的に TFS を軽蔑していますが、そのチーム ビルド システムは、特定のビルド定義を実行できるビルド エージェント (サーバー) のプールを指定できるようにすることで、基本的に私が望んでいることを実行します。チーム ビルドと私が求めているものとの大きな違いは、チーム ビルドは [おそらく] 信頼できる管理されたサーバーのみをビルド エージェントとして使用することです (ランダムに提供されるクラウドソース サーバーとは対照的です)。
既知の問題: セキュリティ!
自分のコンピューターをビルド サーバーとして志願するプロセスが、ブラウザーを TestSwarm に志願するのと同じくらい簡単だったらいいのにと思いますが、実際のファイル システムとコマンド処理エンジンへのアクセスを許可する場合、明らかにセキュリティに大きな影響があります。
- クライアント コンピューター (ビルド エージェント) は、ビルド システムが、惜しみなく提供されたコンピューターで悪意のあるものを実行しようとしていないことを確認する必要があります。
- ビルド システムは、「信頼されていない」クライアント コンピューター (ビルド エージェント) が悪意のあるビルド出力を生成しないようにする必要があります (たとえば、GCC のハッキングされたバージョンを使用してマルウェア/ウイルスに感染したバイナリを生成します)。これは大きな問題であり、ビルド エージェントがビルドへの外部入力を持たないようにビルド プロセス全体をラップする独自のソフトウェア (Folding@Home のような) をビルド システムにインストールさせることによってのみ克服できる可能性があります (たとえば、コンパイラなど、ユーザーがインストールする必要のある追加のツールに依存しません)。それ以外の場合、ビルド システムは、出力を比較して検証できるように、少なくとも 2 つの異なるビルド エージェントが同じバイナリをビルドするように要求する必要があります。