継続的ビルドサーバー(cc.net、hudson、bambooなど)のリモートビルドエクスペリエンス?


9

現在、ビルドプロセスには.net(msbuild&nantを使用)とjava(mavenとantを使用)の両方をビルドするcc.netサーバーを使用しています。

CC.netはソース管理を監視し、別のサーバーで実行されているリモートビルドをトリガーします。CC.netは結果を照合します。

リモートビルドを実行すると、通常は次のようになります。

  • 模擬データを使用してnunitまたはjunitまたは類似のものを実行します
  • オプションでDBスクリプトを実行して、新しいデータベースインスタンスを作成するか、既知の位置からデータベースを復元します。
  • セレンなどを実行してUIをテストする
  • コードカバレッジのためにemmaまたはncoverを実行します
  • さまざまなデプロイメント環境(テスト、受け入れ、本番)向けのシステムを構築します

いくつかのビルドを同時に実行している場合があります。.netとjava(別のプロジェクトチームからの)があります。

新しいプロジェクトをセットアップするときにリモートビルドを動作させるにはかなりの時間がかかり、cc.netよりもリモートビルドに適したものがあるはずだと感じています。

継続的インテグレーションシステムを使用したリモートビルドの経験はありますか?
CIサーバーの機能リストは本当に欲しくありません。多言語、マルチサーバー環境でCIサーバーをどのように使用したかについて聞いていただければ幸いです。

回答:


8

ハドソン(更新:今日の世界では、ハドソンのフォークであるジェンキンスを使用します。)

私は、Javaと.NETの両方のエンタープライズ環境でhudsonを使用して、可視性の高いプロジェクトを作成しました(おそらく、いくつかのサイトに行ったことがあります)。ハドソンは最初からしっかりしていますが、一番いいところは、あなたがやりたいことを何でもできるプラグインがたくさんあることです。Hudsonは高度な設定が可能で、優れたコミュニティがあり、一度に複数のビルドを実行する必要がある場合は、クラスター環境での設定が本当に簡単です。これは、私が使用したすべてのサーバー(CC.NET、Hudson、およびTFS)の中で私のお気に入りのCIサーバーです。

さらに、ChuckNorrisプラグインを使用して、親指を上げたり下げたりすることができます。


1
エキゾチックなことを何もしていない場合はHudsonが適していますが、結局のところ、バッチスクリプトで実行しようとしていることを実行できない場合は、Hudsonもあまりうまくいきません。
ビル・

ハドソンはジェンキンスとオラクル・ハドソンに分かれました。どれを使用するかを共有しますか?

1
@ソービョルン:私はジェンキンスのプロです。いくつかの理由がありますが、私にとってキラーなのは、Jenkinsの開発が活発化していることです。主な理由は、Hudsonの主役である河口浩介がJenkinsキャンプにいるためです。そして、彼はジェンキンスが彼が始めたプロジェクトの真の継続であると感じているようです。最後に、JenkinsにはMicrosoftのクリップアートではないロゴがあります。
トムアンダーソン

@Thorbjørn-私はトムに同意します。私は1年ほどハドソンを使用していません(現在はTFSを使用しています)が、ジェンキンスが進むべき道であるというのが一般的なコンセンサスです。繰り返しになりますが、フォークされていたので使用しませんでしたが、再度拾わなければならない場合は、ジェンキンスのルートに行くことになるでしょう。
ライアンヘイズ

7

私たちはこの質問に少し前から直面していたため、TeamCityに行くことにしました。Hudson、CC、TeamCityのみを調べました。選択は簡単でした-TeamCityは私たちのビルドサーバーになりました。これはプロではなく、ビルドサーバーを使用したのは今回が初めてでした。

ハドソン -どうすればいいのか、どこで読むべきなのかわかりませんでした。そして、私はそこで何かを理解できたとしても、それは選択肢ではありませんでした。CCを見てみることにしました。

クルーズコントロール-Hudsonと同じですが、少し異なります。絶対に、マニュアルとグーグルからのたくさんの助けなしでは何も理解できません。TCを見てみました。

TeamCity -TeamCityは、最初の2つの後、天国のように感じました。その3つのうちで一番使いやすいです。インストールし、管理パネルに移動して、プロジェクトを構成し(SVNの場所を示し、ファイルをビルドするようにポイントし、カバレッジ/ユニットテストを指定するなど)、楽しんでください。何もグーグルしなかったとは言えませんが、それでもセットアッププロセスの95%は非常に簡単で明確でした。私はこのツールを強くお勧めします。行って見てください。それはあなたに多くの神経と時間を節約します:)

TCは無料ではないことにも注意してください。彼らはいくつかの制限付きの商用プロジェクトで使用できる無料版を持っていますが(最大ビルド構成20)-価格ページを見てください。

PS私はTCで働いているように聞こえますが、実際にはそうではありません:)


3

CC.NET 1.4を使用しています。

1.6にアップグレードしようとしています...なんて悪夢でしょう。

その強力な...しかし、それを正しく使用し、すべてがどのように組み合わされるかを理解している場合にのみ。チーム全体から尋ねるのはたくさんあります。サーバーにアクセスでき、設定を変更できる「ビルドマスター」がいます。それでも、ccnetに関してはグーグルがたくさんあり、ビジネス全体が大きな混乱になっています。

個人的にはTeamCityに移りたいです。

ccnetを回避することをお勧めします。


1

良い質問。現在、どのツールが自分に最適かを見つけることも試みています。だから少しだけしか話せない。しかし、私たちはあなたが現在どのCIシステムを選択したか、そしてその理由に非常に興味があります。お知らせください。

CIのレベルが非常に高いことに感銘を受けました。まだUIテストを実行しておらず、データベースインスタンスなども作成していないため、要件が少ないことを認めざるを得ません。単体テストにはモックを使用しているだけです。

今までの経験から:

Javaプロジェクトでは、JUnitとEmmaを使用して正常に動作するBambooを使用しています。そして、新しいプロジェクトを立ち上げるのにそれほど努力はありません。

.NETプロジェクトの場合、私たちは依然として最良のソリューションを探しています

  • クルーズコントロール:リポジトリへの接続に問題があるため、まだ実行できていません

  • TFS:

    a)最初のビルドを実行するには、いくつかのセットアップ手順が必要です。

    b)アクセス権については、いくつかの落とし穴があります。定義できる役割は多数あり、ビルドプロセスにどの権限があり、個人のログインアカウントにどの権限があるかを正確に知る必要があります。しかし、管理に十分な時間があれば、必要な特定の細かさをすべて定義できます。

    c)参照されるライブラリーに関して、多くのプロジェクトでライブラリーを共有したいが、すべてのプロジェクトでそれらを処理したくない場合は、管理する必要がある項目もあります。

    d)NUnitテストの実行は、思ったほど簡単ではありません。Visual Studioが提供するテスト実行を使用している場合のみ簡単ですが、これはNUnitではありません。

    e)私たちはまだNCoverを実行しようとしませんでした(まず最初に:-))

  • Hudson:次に試すツール。.NET用の本当に良い簡単なプラグインがあるようです、私はそれがどのように機能したかをあなたに知らせます

  • Bamboo:最初に得た予測:「Java固有」。それでも.NETプラグインを試してみるかもしれませんが、お知らせします

この議論を続け、経験を交換できることを願っています。

アンディ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.