継続的な統合のためにマシンを購入する-重要な要因は?
-
02-07-2019 - |
質問
継続的インテグレーションを実行するためにコンピューターを購入することを(非常に小さな)会社に提案する予定です。はいと答えた場合、実際にマシンを購入するタスクはおそらく私にかかっているので、私の質問は次のとおりです。
非常に小さな(3人の)PHPチームの継続的統合に使用されるコンピューターで何を探すのですか?
「もの」とは(メモリ、プロセッサなど)は重要ですが、そうでないものは何ですか?
解決
それほど強力なマシンは必要ありません。テストまたは他のメトリックを実行している場合、処理能力がおそらく主な関心事ですが、実際には古いペンティアム1で実行でき、おそらく機能します。
制約が運用環境になります。 LAMPを実行している場合、LAMPセットアップを適切に処理できるマシンを使用する必要があります。これは、かなり現代的な* nixマシンです。
古いPentium4ワークステーションで.NETの継続的統合セットアップをセットアップしましたが、うまく処理されました。
留意点の1つは、ビルドでコードをアーカイブする場合のストレージスペースです。
他のヒント
私の経験から、これは強力なマシンである必要はありません。開発に使用するマシンはどれも満足できるものです。明らかに、マシンが高速であるほど、コードコミットで単体テストを実行している場合の応答が高速になります。私たちのCIサーバーはXP SP2、3Gプロセッサー、3GのRAMを実行しており、今の私たちのニーズに対しては圧倒されています。とは言っても、コミットしてから6分以内に電子メールを受け取って、ビルドがクリーンですべてのテストに合格したかどうかを確認できると便利です。ナイトリービルドを行う場合は、仕様を下げる可能性があります。おそらく、それらを完成させるための時間があるでしょう。ハードドライブ領域(最近は300Gがかなり達成可能)は、レポートやビルドをリグレッションに保存するのに適していますが、NASがある場合は、ビルド後にアーティファクトをプッシュすることができます。
今日購入できる新しいマシンのほとんどは、大きすぎないソースツリーでの継続的な統合のタスクを処理できます。探すべきもの:
- 2〜4 GBのRAM。多くのテストを並行して実行する場合、または仮想マシンを実行してクライアントをシミュレートする場合はさらに多くなります。
- マルチコアプロセッサ(または複数のプロセッサ)。スレッドのバグをキャッチする機会を増やします。
- "サーバー"クラスのマシンは、「デスクトップ」よりも24時間年中無休で操作する傾向がありますクラスのマシンですが、2つの間に明確な境界線はありません。
- RAID1またはRAID1 + 0冗長ディスクは必須です。バックアップを持っている場合(とにかく持っている必要があります)でも、サーバーを再構築するのは苦痛であり、追加の100ドルのハードディスクは保険としての価値があります。
RAM:CIツール( phpUnderControl ?)およびサポートソフトウェアビルドとテストが必要です。
ストレージ:マシンに保持する古いビルドの数を決定します。私の経験では、非常に多くを維持することは有用ではありません。古いチームにロールバックするための多くの正式なプロセスがない小規模なチームがある場合。
CPU:問題なし。購入できるマシンであれば動作します。
2つの間では、ストレージスペースよりもRAMを優先する傾向があります。
アプリが巨大でない限り、4ギガバイトのRAMと、おそらくRAID 0に設定された2つの適度に高速なSATAディスクを備えたデュアルコアボックスが必要です。500ギガバイトですか?
本当に安全にしたい場合は、OSパーティション用にRAID 0用に70台のギグドライブを2台用意し、次にデータ用にRAID 5に3台の140+ギグドライブを用意します。
マシンのパフォーマンスはほとんど重要ではありませんが、使用を開始し、いつか魔法の煙が出たら、作業を続けるにはすぐに交換する必要があるため、可用性に十分注意してください。賢明なバックアップポリシーを定義し、必要に応じて新しい同一のシステムをセットアップする方法を確認してください。たとえば、別のマシンにイメージを作成できる小さなパーティションから実行し、RAID1に存在し、少なくとも1つのドライブが機能する場合はデータの主要部分を物理的に移動できます(ただし、バックアップは他の場所で利用可能です)ネットワークでも同様)。
ここで多くの人が注目していることの1つは、マシンがCIソフトウェアほど重要ではないことだと思います。マシンが重要なのは、異なるアーキテクチャが必要な場合だけです。それ以外の場合は、ターゲット環境に一致するマシンを入手してください。サーバーアプリを構築している場合、アプリはおそらく64ビットサーバーで実行されるため、64ビットプロセッサを使用することをお勧めします。
CIで使用しているツールをもっと気にかけます。高速で動作するものが必要であり、ここで人々が指摘しているように、古いビルドを使用可能にする必要がない限り、古いビルドを保持するべきではありません。もしそうなら、ビルドと結果を別のサーバーにアップロードできるものを探します。