継続的むンテグレヌションの抂芁

最近、私は小さなアプリケヌションをれロから䜜成するずいうタスクのある新しいプロゞェクトに着手したした。 私はテスタヌず話したす

-そしお、どのように新しいバヌゞョンを提䟛したすか

-SVNを䜿甚しお、プロゞェクトの他の党員を奜きにできたす。

-぀たり、あなた自身を構築したすか

-いいえ、いいえ...そこからバむナリを取埗したす。



倚くのプログラマヌは、たずえ眲名にシニアやスヌペリアなどの眲名があったずしおも、人生の䞭でCIの抂念に出䌚ったこずはなく、それが䜕であるかに぀いおほずんど知らないこずがわかりたした。 このテヌマに関するHabréの別の出版物が芋぀からなかったため、私はギャップを埋めるこずを決定したした。同時に、可胜な限り歓迎の招埅を獲埗したした。



継続的むンテグレヌション、なぜ、なぜ、どのように


継続的むンテグレヌション略しおCIは、人生を倧幅に簡玠化できる特別な゜フトりェア開発原則です。 それが指にある堎合、CIシステムは゜ヌス管理を監芖する䞀皮のプログラムであり、倉曎がそこに衚瀺されるず、自動的にそれらをたずめおビルドし、テストを実行したすもちろん蚘述されおいる堎合。 倱敗した堎合、最初に最埌のコミッタヌに、これをすべおの関係者に知らせたす。



これにより䜕が埗られたすか たず、い぀でも、システム内の゜ヌスの状態に関する信頌できる情報がありたす。 最埌のビルドが倱敗「ドロップ」した堎合、Sortsコントロヌルから最新バヌゞョンを取埗できたせん-コンパむルすらできない堎合がありたす。緑色で成功した堎合は、すべお正垞です。 第二に、「勝利」の犯人を芋぀けるのは非垞に簡単です-これが最埌のコミッタヌである可胜性が高いです-圌は「修理」の責任を負いたす。 ずころで、そのような環境では、最も優先床の高いタスクはビルドを修正するこずです。



プロゞェクトで単䜓テストが䜿甚されおいる堎合、ビルドごずに単䜓テストを実行するず、回垰バグがないこずがある皋床保蚌されたすある堎所で修埩され、別の堎所で萜ちた堎合。

たた、カバレッゞ、静的分析、重耇コヌド怜玢など、ビルドにさたざたなコヌド品質メトリックを含めたり、テストマシンぞのむンストヌルを自動化したりするこずもできたす。



それでは調理方法は


CruiseControl、CruiseControl.Net、Atlassian Bamboo、Hudson、Microsoft Team Foundation Serverが思い浮かびたすが、個人的には、OpenSourceではありたせんが、小芏暡なプロゞェクトには無料のTeamCityが個人的に気に入っおいたす。



したがっお、.NetVS2008SP1䞊の小さなプロゞェクトのTeamCity CIの䞋で実行する必芁がありたす。このプロゞェクトはSVNに栌玍されおおり、nUnitのテストが含たれおいたす。 ご芧のずおり、TeamCityでこれを実行するために、1行のコヌド/構成を蚘述する必芁はありたせん。



たず、サヌバヌが必芁です。 はい、私は知っおいたす、これはすでにかなりたくさんありたすが、私は管理者に行っお蚀うず、肯定的な結果に自信がありたす管理者に行っお蚀うず、私にサヌバヌを䞎えおくださいたずえば、再刈り取りをしおください。 それで、すでにサヌバヌを持っおいるずしたしょう、それは仮想です。 next-next-nextをクリックするだけで、TeamCityをむンストヌルしたす-デフォルトのむンストヌルはかなりたずもです。 将来的には、ほずんどの蚭定は倉曎できたせん。ここでは、倉曎が必芁な蚭定のみを瀺したす。 たあ、将来のために、それはすぐに䟿利になり、適切なバヌゞョンの.Net Frameworkこの堎合は3.5SP1ずWindows SDKも入れたす。



はじめに蚭定


そのため、TeamCityでは、むンストヌルの完了時に新しいプロゞェクトを䜜成したす。これは実際には個々のビルド構成の単なるグルヌプであり、その䞭に新しい構成を䜜成したす。



このペヌゞで指摘できるもう1぀のこずは、ProjectName \ bin \ Release \ *のような、バむナリぞのパス、たずえばArtifactsフィヌルドです。 䞀般に、アヌティファクトは、ビルド結果ずしお意味のあるファむルであり、バむナリ、ログ、分析結果などになりたす。 次に、ビルドごずにWebむンタヌフェむスから適切にダりンロヌドできたす。



ずころで...残念ながら、vdprojの暙準的なVisual Studioむンストヌルプロゞェクトはmsbuildず互換性がありたせん。msbuildは内郚で汚い䜜業をしおいたす。 したがっお、ビルドの結果ずしお既補のmsiを取埗したい堎合は、少し怜蚎する必芁がありたす。 しかし、それに぀いおは埌で。



バヌゞョン管理システム


[次ぞ]をクリックしお、バヌゞョン管理システム専甚のペヌゞを芋぀けたす。 最初に、VCSルヌトを䜜成する必芁がありたす。 説明しおみたしょう。たずえば、隣接するフォルダヌにある耇数のプロゞェクトに同じ゜ヌス管理を䜿甚したす。 次に、それぞれに個別にアクセスを構成するこずは意味がありたせん-ルヌトぞのアクセスを構成するだけで、各構成で必芁な゜ヌスコヌドの郚分を瀺すだけです。 したがっお、新しいVCSルヌトを䜜成しお接続し、次にVCSのタむプSubversionがありたすで、タむプに応じお、さらに蚭定を行いたす。svnには、それぞれURL、ナヌザヌ名、パスワヌドがありたす。 ペヌゞの䞋郚にあるラベル付けルヌル蚭定の倧きなグルヌプは、ビルドを成功させるためのタグを䜜成する堎合に䜿甚したす。ちなみに、最初から暙準のリポゞトリ構造を蚭定したした。 [接続のテスト]ボタンを䜿甚しお、入力したデヌタの正確性を確認し、保存したす。 新しく䜜成されたルヌトが䞊郚に衚瀺された構成の遞択制埡ペヌゞに戻り、チェックアりトルヌルを远加する必芁がありたす。 リポゞトリのどの郚分を構築するかを決定したす。 たずえば、プロゞェクトがsvn.company.com/trunk/projectにある堎合、 svn.company.comにルヌトをむンストヌルし、次のようにルヌルを蚭定するこずは理にかなっおいたす。

+:trunk/project=>.





぀たり、SVNのルヌトに盞察的なアドレスでSVNにあるものを取埗し、アクティブな䜜業フォルダヌに取埗したす。 ゜リュヌションファむルぞのパス、アヌティファクトぞのパスなど、他のすべおのパスは、それに察しお盞察的に蚭定されたす。



実際にビルド「ランナヌ」


すべお、最も興味深い郚分に進むこずができたす。「ランナヌ」の遞択、぀たり実際にビルドを実行するプロセスです。 すぐに䜿甚できるTeamCityは、Ant、Mavenなど、さたざたなランナヌをサポヌトしおいたす。さらに興味深いのは、NAnt、MSBuild、およびsln200 *です。



たず第䞀に、sln2008は私たちのためです。 パラメヌタヌから、゜リュヌションファむルぞのパスを瀺すだけで十分です既に述べたように-ルヌルで指定されたルヌトを基準にしお。 次に、NUnit蚭定を含むセクションがありたす。ここでは、テストでdllファむルのバヌゞョンずパスを指定するだけで十分です。 それだけです 保存するず、次のペヌゞに移動したせん。これは、構成がすでに䜜成されおおり、䜿甚可胜であるためです。 もちろん、これをすべお継続的むンテグレヌションず呌ぶには、ビルドを起動するための条件を远加する必芁がありたす。むンタヌフェヌスの右䞊郚分には、4番のビルドトリガヌのリンクがありたす。 ここでは、唯䞀の鳥を眮く必芁がありたす-ファむルがVCSにチェックむンされたずきにトリガヌを有効にしたす。 これで、「プロゞェクト」ペヌゞに切り替えお、ビルド行の「実行」ボタンを抌すこずができたす。 すべおが正しく行われた堎合゜ヌスコヌドが適切な堎合-ビルドずいう単語の暪のアむコンが緑色に倉わり、正垞に完了したテストの数が䞋に衚瀺されたす。



開発方法


はい、あなたが望むように。 重耇コヌド怜玢たたはFxCopを有効にできたす-察応するランナヌは既にTeamCityに含たれおいたす。 展開を自動化できたす-ここでは、より難しくする必芁がありたす。



もちろん、プロゞェクトが単玔なコピヌに䟝存しおいる堎合は、単玔なコマンドラむンランナヌに基づいお構成を䜜成し、ビルドのアヌティファクトに䟝存関係を远加しお楜しむこずができたす。



しかし、たずえばサヌビスや、さらに悪いこずにデヌタベヌスがある堎合はどうでしょうか

展開前のWindowsサヌビスを停止、曞き換え、開始する必芁がありたす。デヌタベヌスを再䜜成たたは曎新する必芁がありたす。



これがNAntたたはMSBuildの出番です。 䞀方ず他方の䞡方でスクリプトを䜜成したしたが、特別な奜みがあるず蚀うのは難しいです。 それらはほが同じで、それぞれに長所ず短所がありたす。 たずえば、nantはVisual Studioプロゞェクトで動䜜するために同じmsbuildを呌び出したす。msbuildはデフォルトで.netフレヌムワヌクずずもにむンストヌルされたす。 しかし䞀方で、nantにはnant-contribアドオンのかなり倧きなラむブラリがありたす。 䞀般的に-奜みの問題。



では、このようなスクリプトをプロゞェクトに远加する方法は コントロヌルに远加しお、適切なランナヌを蚭定するだけです。



私のサむト、Windowsサヌビス、およびデヌタベヌスを䜿甚した兞型的なプロゞェクトビルドスクリプトは、プロゞェクトをビルドし、テンプレヌトに埓っお構成を曎新し、メンテナンスメッセヌゞをサむトに配眮し、開発サヌバヌのサヌビスを停止し、x-copy開発サヌバヌにすべおを展開したす。 SORTSコントロヌルのスクリプトを䜿甚しおデヌタベヌスを曎新しもちろん、必芁な堎合、サヌビスを開始し、maintance-messageを削陀したす。 このスクリプトの利点は、倉曎なしでラむブ環境に展開するのに適しおいるこずです。



䞀般に、これは別の䌚話のトピックです。この投皿が気に入ったら続けたす。



psたた、vdprojのビルド方法を䌝えるこずも玄束したした。 正解はVisual Studioです。 はい、残念ながらビルドサヌバヌにむンストヌルする必芁がありたす。 これは、たずえば次のように実行できたす。



pps゜フトりェアのJetBrainsに感謝したす。



ppps招埅しおくれたMitzgolにさらに感謝したす。



All Articles