継続的な統合サービスのための「白紙の状態のシステム」を確実にする効果的な方法


10

プロジェクトの継続的インテグレーション(CI)サービスをセットアップしたいと考えています。そのCIサービスは、デプロイメントを含むプロジェクトライフのすべての側面を制御する必要があります。

つまり、各反復でCIエージェントがクリーンなシステム(特にUbuntuサーバー)を取得し、そこにプロジェクトをデプロイしてテストを実行する必要があります。

私たちのエコシステムはかなり珍しいので、CIサービスを最初から自分で作成します。問題は、CIの反復ごとにクリーンなスレートシステムを効果的に提供する方法ですか。

プロジェクトの展開では、いくつかのDebianパッケージをインストールし、いくつかのnginxサイトを構成し、いくつかのパッケージをシステム全体の実装言語固有のパッケージマネージャー(LuaRocks)にインストールします。それ以上に邪魔になるものはありません(私は信じています)。したがって、完全な分離とクリーンを確保するよりも、クリーンスレートをすばやく(最新のハードウェアでは1分以内に、より速く、より良く)セットアップできることが重要です。

私たちが必要とすることを行う方法は2つあります。

  • いずれかの種類の刑務所(lxcなど)をセットアップします。
  • または、スナップショットを実行できる仮想マシンをインストールして使用します。

しかし、現時点では決定するのに十分な情報がありません。

何をアドバイスしますか?他のオプションはありますか?特定のツール名はありますか?

注:CIサービスは、Citrix XenServerゲスト内で実行されます。価格がリーズナブルであれば、有料のソリューションで問題ありません。(通常、この分野では妥当ではありません。)リモートCIソリューションは適切ではありません。

回答:


5

見てみましょうシェフ/ベイグラントを。十分速いかどうかはわかりませんが、検討する必要があります。

Chefに慣れていない場合に備えて、シンプルなコードベースのサーバーのプロビジョニングを可能にするように設計されたサーバーです。ウェブキャストの1つをご覧になることをお勧めします。 Django Chef Webキャスト

Vagrant、veewee、chef-solo、knife-soloなどこれはあなたがやりたいことのほとんどをカバーしていると思います。

Vagrantブログ投稿Vagrantを使用したサーバーのクイックセットアップを示すブログ投稿。


ありがとうございました。回答に詳細を記載してもよろしいですか?
アレクサンダーグラディッシュ2012

私はこれを自分で使ったことがないので、私ができることは、役立つと思われるいくつかのリンクを投稿することだけです。
フィリップティニー

13

ジェンキンスを見てください。VMWareVirtualBox、またはAmazon / a Eucalyptusクラウドの仮想マシンでビルドを実行できるプラグインがあります。クラウドで実行される仮想マシンの場合、パッケージのインストールなどの手順を実行できるinitスクリプトを指定できます。


ありがとう、でもJenkinsはCIサーバーなので、自分で構築する方法について知りたいのですが。
Alexander Gladysh 2012

2
@AlexanderGladyshなぜホイールを再発明したいのですか?Jenkinsビルドは、makeファイルからプレーンシェルスクリプトまですべてを実行できます。さらに、堅牢なインターフェイス、優れたサポート、および多数のプラグインを備えています。ビルドが非常に複雑な場合でも、jenkinsが実行できるシェルスクリプトでなければなりません
TheLQ

Jenkinsを使用したくない場合でも、クラウドベースのものが適していると思います。マシンイメージをカスタマイズして必要なソフトウェアを提供し、インスタンスの起動時にテストする構成とコードのみを追加して、起動時間を短縮できます。
Lars Kotthoff、2012

とにかく、JenkinsまたはJenkinsなし、クリーンスレートOSスナップショットをすばやく取得するために何を使用しますか?(サードパーティのクラウドについて言及するのをやめてください。これは私たちのサーバー上で実行する必要があります。)
Alexander Gladysh '26 / 08/26

自分のサーバーでEucalyptus / OpenStack / ...クラウドを実行しますか?
Lars Kotthoff、2012

2

VMインフラストラクチャを使用してベーステンプレートを作成するか、@ LarsKotthoffが示唆するようにクラウドを使用します。それらをすばやくスピンアップするのは簡単で、どこから始めたのか確信できます。

ただし、最終的には、何が起こっているのかを調整するために、VMの外側に何かが必要になります(マシンをセットアップし、マシンで必要なプロセスを開始します)。Jenkinsでスクリプトの出力をキャプチャして後で検査できることを確認します。

JenkinsはCIサーバーとして開始されましたが、これまでに私が使用してきた多くの組織はそれ以上にそれを使用しています。これは実際に(手動またはスケジュールされた)物事を開始して結果をキャプチャし、予期したとおりに発生したことを検証するためのツールです。そして、それは非常に柔軟です。


ありがとうございます。ただし、Xen VMインスタンスの内部ではなく、内部でセットアップしたいと思います。これは、私の特定のケースで整理する方がはるかに簡単です。私はジェンキンスを調べますが、まだもっと狭い解決策を探しています。
Alexander Gladysh 2012

また、「VMインフラストラクチャを使用してベーステンプレートを作成する」について詳しく説明してください。
アレクサンダーグラディッシュ2012

2

プロジェクトの継続的インテグレーション(CI)サービスをセットアップしたいと考えています。そのCIサービスは、デプロイメントを含むプロジェクトライフのすべての側面を制御する必要があります。

ジェンキンスはかなりの人から言及されています。スクリプトで一からやり直すこともできますが、Jenkinsを使用すると、同じ柔軟性が得られ、それをまとめるオーバーヘッドが少なくなります。

つまり、各反復でCIエージェントがクリーンなシステム(特にUbuntuサーバー)を取得し、そこにプロジェクトをデプロイしてテストを実行する必要があります。

プロジェクトの展開では、いくつかのDebianパッケージをインストールし、いくつかのnginxサイトを構成し、いくつかのパッケージをシステム全体の実装言語固有のパッケージマネージャー(LuaRocks)にインストールします。それ以上に邪魔になるものはありません(私は信じています)。したがって、完全な分離とクリーンを確保するよりも、クリーンスレートをすばやく(最新のハードウェアでは1分以内に、より速く、より良く)セットアップできることが重要です。

ここで、仮想マシンイメージが役立ちます。クリーンなイメージをセットアップして、すべてのマシンにそのフォークを起動させることができます。元の画像は変更されませんが、テストでは違いがわかりません。あなたは間違いなく、1分で実行されるブートストラップイメージを取得できるはずです。

価格がリーズナブルであれば、有料のソリューションで問題ありません。(通常、この分野では妥当ではありません。)リモートCIソリューションは適切ではありません

複数のマシンを同時に実行したい場合は、Nimbulaをチェックしてください(私は恥知らずです。私はそれらのために働いています)。小規模な導入の場合は無料で、テスト用に独自のプライベートクラウドをまとめることができます。Jenkinsとオーケストレーションファイルの間で、ホストサーバー、テストクライアント、その他すべてを起動して、対話なしでテストコードの全範囲を自動的に実行できます。


ああ。今日は遅いのかもしれませんが、Nimbulaのサイトを調べてみましたが、マーケティングの背後にある理由がわかりません。私が必要なことを行う方法を説明する正気なテキストを指してもいいですか?(
つまり

@AlexanderGladysh多くのマシンを使用して/大量のCI作業からビルドする場合に便利です。少なくとも3台のマシンのクラスターを保証するのに十分なワークロードがない場合は、役に立ちません。
ジェフファーランド2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.