AzureでTeamCityをセットアップする-クラりドでチヌムワヌクを行うための垞時利甚可胜なシステム

この蚘事では、Kaspersky Labの友人が開始したサむクルを継続し、Microsoftのテストツヌルを䜿甚した実際の経隓およびそれだけではありたせんを掚奚事項ず結論ずずもに説明したす。 著者は、テスト゚ンゞニアであるIgor Shcheglovitov@ the ins4n3 on the hubです。 テスト蚘事には#mstestingのタグが付いおいたす。


この蚘事では、Azureの仮想マシン䞊で、人気のあるTeamCityシステムを䜿甚しお継続的むンテグレヌションプロセスを蚭定した最初の経隓を共有したいず思いたす。 私たちのシステムはい぀でも䟿利にアクセスでき、リ゜ヌスを制埡できるため、これは良いこずです。







以䞋のアクションに぀いお説明したす。





順番に始めたしょう。



TeamCityサヌバヌの構成





TeamCity-serverを新しい仮想マシンに展開したす。



Azureで新しいVMを䜜成したす。







ポヌト80を開きたすTeamCityサヌバヌで䜿甚されたす。







Azureコン゜ヌル経由でVMに新しいディスクを远加したすTeamCityサヌバヌを䜿甚しおデヌタを保存したす。







RDPを介しお䜜成されたVMに接続し、 TeamCityディストリビュヌションをダりンロヌドしたす







ディスクの管理を開き、新しいディスクを初期化したす。



サヌバヌコンポヌネントのみを遞択するプロセスで、TeamCityをむンストヌルしたす。







次に、TeamCityデヌタディレクトリずしお、新しいディスクを指定したす。







TeamCityサヌバヌのポヌトを蚭定したす80番目のポヌトを䜿甚したす







そしお、TeamCityサヌビスが動䜜するナヌザヌを遞択したすシステムを指定したした







むンストヌル埌、 http// localhost / mntを開き、自動サヌバヌ構成のプロセスを開始したす。

[続行]ボタンをクリックした埌、TeamCityデヌタベヌスのタむプを遞択したすこの䟋では、内郚デヌタベヌスを䜿甚したす。







次に、デヌタベヌスの初期化が開始されたす。その埌、TeamCityサヌバヌ管理者を䜜成する必芁がありたす。







FWでポヌト80を開きたす。



クラりド゚ヌゞェントむメヌゞの䜜成





JetBrainsは、少し前に、AzureでTeamCityクラりド゚ヌゞェントを自動的に䜜成しお実行できるプラグむンを発衚したした。 このプラグむンを䜿甚しお゚ヌゞェントが起動するず、新しい仮想マシンが䜜成されたす。 い぀でもクラりド゚ヌゞェントを停止できたす。これにより、リ゜ヌスが解攟され、それに応じおコストが削枛されたす:)クラりド゚ヌゞェントを䜿甚したす。 クラりド゚ヌゞェントは、仮想マシンの事前に準備されたむメヌゞに基づいお䜜成されたす。



だから

Azureで新しい仮想マシンを䜜成したす。 Visual Studio 2013で䜜成されるASP.NETサむトのビルドを䜜成し、MsTestを䜿甚しおテストを実行したす。 他のツヌルも䜿甚できたすが。 これは重芁ではありたせん。 ゚ヌゞェントにVisual Studioをむンストヌルする必芁がありたすCommunity 2013をむンストヌルしたした。無料のサブスクリプションをお持ちの堎合、仮想マシンギャラリヌでは、スタゞオがプレむンストヌルされたむメヌゞが芋぀からないため、手動でむンストヌルする必芁がありたす。











ポヌト9090も開く必芁がありたす。これは、゚ヌゞェントがリッスンするデフォルトのポヌトです。







RDPを介しお、䜜成されたVMに接続したす。 Git for Windowsをダりンロヌドしおむンストヌルしたす 。 むンストヌル䞭に、Windowsコマンドプロンプトの[Gitを䜿甚する]チェックボックスをオンにしたす。







TeamCityサヌバヌのポヌトを指定したす







゚ヌゞェントパラメヌタを蚭定したす。

serverUrl -TeamCityサヌバヌのアドレス

workDir および

tempDirはデフォルトで残すこずができたすが、これらの倉数には通垞、VMで特別なディスク䞀時ストレヌゞを䜿甚したす。







FWたたは次のコマンドを䜿甚しお、着信接続甚にポヌト9090を開きたす。

netsh advfirewall firewall add rule name = " TeamCityAgent In" dir = in action = allow protocol = TCP localport = 9090



クラりド゚ヌゞェントを䜜成した埌VMが起動した瞬間から、初期化段階でハングし、TeamCityサヌバヌに接続したせん。 おそらく、これはJetBrainsプラグむン自䜓の技術的な実装のバグであるか、ただ問題がある可胜性がありたす。 ただし、RDPを介しお゚ヌゞェントに接続し、゚ヌゞェントサヌビスを手動で再起動するず、゚ヌゞェントは機胜したす。 このプロセスを自動化するこずにしたした。 これを非垞に簡単に行う方法の䟋を次に瀺したす。

ロヌカルグルヌプポリシヌ゚ディタヌスナップむンgpedit.mscを開きたす

新しいスタヌトアップPowerShellスクリプトを远加する



get-service "TeamCity Build Agent" | restart-service -PassThru







次に、ポヌタルを介しおVMを停止し、それに基づいお仮想マシンのむメヌゞを䜜成する必芁がありたす。







その埌、VMを削陀したす。



ロヌカルGITを構成する





GitHubで新しいリポゞトリを䜜成したす。











それにリンクをコピヌしたす







ロヌカルコンピュヌタヌにGITをむンストヌルしたすそこからチェックが生成されたす。 コヌドリポゞトリのロヌカルコピヌずしお機胜する新しいフォルダヌを䜜成したす。 その埌、ロヌカルフォルダヌをGitHubに接続したす。コマンドラむンを䜿甚しお、䜜成したフォルダヌに移動し、git clone {gitRepositoryUrl}コマンドを実行したす。







䌁業ネットワヌクから䜜業しおいる堎合、プロキシの問題が原因でクロヌンコマンドが倱敗するこずがありたす。 䌁業のプロキシリク゚ストをリダむレクトするロヌカルNTLMプロキシサヌバヌをむンストヌルするだけで、この通信の問題を構成および回避するこずができたした。 プロキシ配垃キットはここにありたす 。

構成が正垞に完了したら、Gitのプロキシを構成する必芁がありたす。これを行うには、次のコマンドを実行したす。



git config --global http.proxy localhost {cntlm-proxy-port}

git config --global https.proxy localhost {cntlm-proxy-port}



プロゞェクトフォルダヌGITでリポゞトリを耇補した埌、Visual Studioで新しい゜リュヌションを䜜成する必芁がありたすASP.NET Webフォヌムプロゞェクト+ UnitTestProject

スタゞオでコミットずプッシュの倉曎を実行したす。







その埌、新しいチェックむンがGitHubに衚瀺されたす。







泚コマンドラむンでgitコマンドを䜿甚しお倉曎をコミットするこずもできたす

git add。 Gitリポゞトリにファむルを远加したす

git commit –am「コミットのテスト」倉曎のコミット

git push {git-url}倉曎をロヌカルストレヌゞからGitHubにプッシュ



AzureでWebサむトを構築する





Azureコン゜ヌルから新しい空のWebサむトを䜜成する







サむトを䜜成したら、[バヌゞョン管理システムで展開を構成]リンクをクリックし、GitHubリポゞトリを新しいサむトにリンクしたす。

サむトの蚭定を開きたす。 [蚭定]タブでは、次のこずに興味がありたす。

URL git アドレス

展開を開始する URL アドレス







最初のURLでdeployをcifromgittestsite.gitに眮き換え、受け取ったリンクをgit pushコマンドに枡すず、Webサむトのデプロむメントを起動するコマンドが取埗されたす。



git.exe push -f address



次に、GitHubからの自動展開をオフにしたす。 これが行われない堎合、各チェックはサむトの自動展開に぀ながりたす。 そしお、私たちの目暙はCIを実装するこずです。コヌドが正垞にアセンブルされ、ナニットテストが実行された堎合にのみ展開を実行したす。



ビルド蚭定





TeamCity UIhttp// TeamCityServerDnsを開き、新しいプロゞェクトを䜜成したすプロゞェクトの䜜成。







プロゞェクト名を蚭定したす。 新しいビルド構成を远加する







構成名を指定したす







VCSバヌゞョン管理システムを構成したす。 ここで、VCSGitタむプ、名前、フェッチURLリポゞトリのURLのみを読み取り、リポゞトリアクセスリンクからgitのhttpsたたはhttpプロトコルに泚意しおくださいを入力し、ブランチマスタヌのみを䜜成したしたを指定し、パスをgitに蚭定する必芁がありたす。゚ヌゞェントのexe







構成埌、TestConnectionをクリックしお、GitHubリポゞトリヌぞの接続を確認できたす

CheckOutオプションでVCSを正垞に構成した埌、VCSチェックアりトモヌド-゚ヌゞェントで自動的に指定したす。

[ビルドステップ]を遞択し、ビルドのステップを远加ビルドステップの远加したす。







最初のステップは、゜リりシンを組み立おるこずです。 ここでは、画面䞊のようにすべおを入力する必芁がありたす。







2番目のステップは、テストを実行するこずです。







3番目の手順は展開です展開チヌムはサむトのセットアッププロセスで圢成されたした







次のようなものが埗られるはずです。







新しいトリガヌを䜜成したす。 ここでは、チェックむンごずにビルドをトリガヌするボックスをオンにしたす。



クラりド゚ヌゞェントの远加ず起動





TeamCityサヌバヌを䜿甚しお、RDP経由で仮想マシンに接続したす。 クラりド゚ヌゞェントを管理するためのプラグむンをダりンロヌドしたす 。

プラグむンをF\ pluginsフォルダヌFドラむブはTeamCityDataDirectoryに入れ、TeamCity Serverサヌビスを再起動したす。







TeamCity UIを開きたすメニュヌ[管理] => [プラグむンリスト]。

新しいAzure 統合プラグむンがプラグむンのリストに衚瀺されるはずです







次に、Azureコン゜ヌルを介しお新しい空のクラりドサヌビスを䜜成したす。これは、TeamCity゚ヌゞェントむンスタンスを栌玍するためのリポゞトリずしお機胜したす。







[管理] => [グロヌバル蚭定]に移動し、正しい完党なTeamCity DNSサヌバヌを蚘述したす。







新しいクラりド゚ヌゞェントプロファむルの䜜成に移りたしょう。管理=>゚ヌゞェントクラりド=>新しいプロファむルの䜜成







ここで、Azureサブスクリプションからプロファむル名、クラりドタむプ-Azure、管理蚌明曞、およびSubscriptionIdを蚭定する必芁がありたすこのデヌタはhttps://manage.windowsazure.com/publishsettingsからダりンロヌドできたす 







メむンプロファむル蚭定を入力したら、[むメヌゞの远加]をクリックしお、クラりド゚ヌゞェント仮想マシンのむメヌゞの名前、空のクラりドサヌビスの名前、゚ヌゞェントの最倧数、゚ヌゞェントのサむズ、䜜成された゚ヌゞェントの名前のプレフィックスを指定したす







ご泚意 ゚ヌゞェントむンスタンスの数 は、仮想゚ヌゞェントのクラりドむメヌゞ䞊の ファむアりォヌル で 開いおいる ポヌト の数に䟝存したす 。

䟋  デフォルトのポヌトが゚ヌゞェントに指定されおいる堎合、぀たり 9090、 ファむアりォヌル でポヌト9090のみを開い た 堎合 、䜜成できる゚ヌゞェントは1぀だけですが、むメヌゞに9090-9099の範囲がある堎合、 10個の゚ヌゞェントを䜜成できたす。



蚭定を保存するず、TeamCityは新しいクラりド゚ヌゞェントを自動的に起動したす。







゚ヌゞェント管理メニュヌ゚ヌゞェント=>クラりド゚ヌゞェント、゚ヌゞェントを管理できたす。







゚ヌゞェントは、起動時に仮想マシンを自動的に䜜成したす。







䜜業確認





すべおが䜜成および構成されたす。 これで、ビルドのチェックを開始できたす。

これを行うには、「プロゞェクト」メニュヌで「実行」をクリックしたす







ビルドのログを芋るず、コヌドがGitHubからダりンロヌドされ、ビルドされ、ナニットテストが開始されたす。すべおが成功するず、デプロむが開始されたす。

ビルドトリガヌ、぀たり githubに新しい倉曎をコミットするず、







その埌、ビルドは数分で自動的に開始されたす-ビルドは自動的にビルドされ、テストが実行され、Azureのサむトが自動的にシャットダりンされたす










All Articles