web-dev-qa-db-ja.com

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

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

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

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

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

いくつかのビルドが同時に実行されている場合があります。netと一部のJava(異なるプロジェクトチームから))。

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

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

9
Chris Buckett

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

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

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

8
Ryan Hayes

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

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

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

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

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

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

7
Jefim

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

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

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

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

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

3
Nobody

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

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

今までの経験から:

Javaプロジェクトの場合、JUnitとEmmaを使用して正常に動作するBambooを使用しています。新しいプロジェクトを設定するのにそれほど労力は必要ありません。

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

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

  • TFS:

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

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

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

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

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

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

  • Bamboo:最初の予測: "Too Java= specific"。しかし、.NETプラグインを試してみるかもしれませんが、お知らせします

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

アンディ

1
Mayoares