2009-07-20 5 views
7

私はCIサーバを構築しており、本当の経験を得ることに本当に感謝し、人々が何を使用しているのかを概観します。あなたの継続的な統合はどのように機能しますか?

あなたのビルドプロセスは何ですか?以下のようなものがあります:コードとテストのための時間ごと

  • 1、ビルドMSIおよびコードメトリクスのための別の毎日
  • など、

もが、あなたの完全なビルドを何プロセス使用ですか?テストのため、

  • ncover - - テストカバレッジのため、
  • NDependの - コードメトリクスのため、
  • 砂の城
  • のMSBuild、
  • NUnitの、

    • チーム都市:あなたはのようなものを使用しています - コードコメントによる文書化のために、
    • testcomplete - QAテストの場合、
    • など?

    共有! ;)

  • +2

    ご覧ください。http://stackoverflow.com/questions/102902/what-is-a-good-ci-build -process – Shog9

    +2

    @ Shog9:あなたが参照している質問は、より抽象的なレベル(私は* meta *と言っていますか?)でCIを議論していますが、この質問は具体的な実装の詳細を求めています。私は彼らがこれを開いたままにするのに十分に異なると思う。 – Treb

    答えて

    3

    最新のCITCON北米(Continuous Integration and Testing conference)で私たちはすべて同じ経験を共有し、簡単なCIから非常に組み立てられたCIおよびリリースシステムへのロードマップをまとめようとしました。

    元の会議ノートはhereです。 Flickrと一緒にphotostreamcleaned up versionは、urbancodeブログでも入手できます。

    オーストラリア人はCITCONブリスベンで話題を再訪し、そのpencastは、これらのリソースのいくつかが有用で利用可能

    希望です。

    2

    Javaの場合、SVNリポジトリのコミットをチェックしています。コミットするたびに、すべてがコンパイルされ、すべてのテストユニットがMaven2を使用して実行されます。また、HudsonはSonarのインスタンスに接続されており、コーディングスタイルとテスト範囲についての統計情報を示しています。

    Sonar screenshot http://nemo.sonarsource.org/charts/trends/60175?sids=1024412,1025601,1026859,1073764,1348107,2255284&metrics=complexity,mandatory%5Fviolations%5Fdensity,lines,coverage&format=png&ts=1244661473034

    甘い:)

    +0

    あなたはおおよそ1日のコミット数を知っていますか? – Treb

    0

    私の場合は(社内サポートCBシステム構築/設計/)、自動的にCBをキュー与えられたCBの設定によってターゲットツリーのVCSにコミット要求(CBが実行されている間に到着する複数の要求は、現在のCBプロセスが完了すると直ちに実行される1つに縮小されます)。

    各CBインスタンスは、CBの要求に応答して、構成されたビルドとテストのステップを実行し(すべてのCBインストーラが共有する分散型サーバーの「クラウド」と並行してファームウェアを構築します)、ビルドとテストの結果をログに記録します時には頻繁に実行される可能性のある「重いテスト」(CB要求をブロックしないように設定された頻度より頻繁には設定された頻度よりも頻繁に実行される)それに対して彼らは走った)。

    CBによって追跡されたツリーの一部ではない依存関係のために、 "head to"が他のVCSの "trunk"になる "sync to head"(これらは軽量で、非常に明示的な統合要求(他の極端な場合、生産上重要なビルド/プロジェクトの「リリースブランチ」の場合)または中程度の許容範囲でのみ実行できます。

    リリースエンジニアリングプラクティスの頂点ではないと思いますが、さまざまなオプションの中で、非常に多様な重要性、依存性重さ、&c ;-)の非常に多様なプロジェクトでうまくいきます。

    2

    私の以前のプロジェクトでは、2台のサーバと1台のSVNサーバを使用していました。

    最初のluntbuildマシンは、各コミットごとにプロジェクトインクリメンタルビルド+ユニットテストをビルドし、その後、ビルド+ユニットテスト+完全インストールパッケージを夜間に使用しました。

    第2のluntbuildマシンは、統合テストのテストリグとして使用されました。最初のマシンが夜間のインストールを完了するとすぐに、それを選択し、それ自身で展開し、統合テスト(スイングGUIのjunitベースのドライバ)を実行するので、毎朝のテストエンジニアは彼らが新しいビルドをしたいかどうかを決定できるように、サニティチェックの報告書。

    2

    私たちは、nantと組み合わせてCIサーバとしてCruiseControl.netを使用しています。ほとんどのビルド(約30個のビルドがあります)が変更時にトリガーされます。それほど重要ではない重いビルドは、毎晩1回だけトリガされます。これは、通常のビルドの大半を清掃するメンテナンスビルドにも適用されます。

    私たちのC/C++コードビルドでは、IncrediBuildのような会社で使用できるすべてのマシンにコードビルドを配布できる独自のビルドシステムを使用していますが、はるかに柔軟性があります。 C#のビルドでは、devenv.comを直接呼び出しますが、ユニットテストを実行するにはNUnitを使用します。私たちのC++単体テストは独自のフレームワークを使用しており、NUnitに非常によく似たXMLで結果を実行しています。いくつかのコードチェックでは、毎晩pclintを実行します。今のところ、コードカバレッジはまだ行われていませんが、これはちょっと残念です。

    また、このシステムを使用して、製品の完成品を準備しています。それはちょうど最初のステップです、それはまだいくつかの手動アクションが必要です。

    2

    ビルドプロセス - 実行中の大きなコードベースのうち、現在アクティブな4つのブランチが4つあります。各ブランチのために我々はビルドを2つの段階に分けている:我々はできるだけ早く完全自動化された

  • できるだけ壊れたコード、または壊れたテストについてのフィードバックを得ることができるように、すべてのコミット後に実行

    • クイック継続的な統合ビルドを毎日2回実行されるビルドで、コードが最初から最後までビルドされることを保証します。当社のビルドプロセスがZed Builds And Bugsによって調整とAntが含まれている

    、作り、Mavenの、JUnitの、FindBugsの、シェルスクリプト(歴史的)、WindowsやLinux、AIX、HP、およびSolarisの間。

    現在、開発プロセスの進捗状況をより高いレベルから把握できるように、過去の傾向と統計情報のロールアップを追加しています。

    0

    Jenkinは、継続的インテグレーション(CI)に最適なツールです。 CIは、リポジトリ(SCM)のコードを頻繁に統合するだけです。さらに、あなたのコードを構築するためにSCMをジェンキンに統合する。

    ジェンキンでポーリング頻度を設定できます。 SCMで変更とコミットが行われるたびに、Jenkinsはビルドを試みます。この方法は、継続的な統合です。

    関連する問題