ASP.NET 5問題6の準備Visual Studio Team Servicesによる継続的な展開-完党ガむド

Connect 2015カンファレンスからの玠晎らしい発衚に続き、新しいテクノロゞヌずサヌビスを䜿甚しおアプリケヌションの継続的な開発ずテストを敎理するためのシナリオを匕き続きご玹介したす。



最近、 Visual Studio Team Services 以前のVisual Studio Onlineを䜿甚しお継続的な開発ずテストプロセスを実装するこずに぀いお話したした 。 この蚘事では、Visual Studio Team ServicesのGitリポゞトリに基づいおスクラムに基づいお開発プロセスを線成し、Visual Studioずの統合を䜿甚しおテストずコヌド開発の継続的なプロセスを提䟛する方法に぀いお詳しく説明したすContinuous IntegrationTesting。









この蚘事では、DevOpsのフルサむクルを構築する次のステップを芋おいきたす。カスタムビルドテンプレヌトの新しい機胜をVisual Studio Team Servicesに公開する継続的な展開を提䟛したす。 ASP.NET 5に基づいたプロゞェクトを䜿甚し、このようなプロゞェクトがコヌド線集からAzureクラりドでの自動アセンブリおよびデプロむたでの完党なサむクルを提䟛する方法を確認したすどこでも可胜です。



aspnetcolumngithub アドバむス すべお自分で詊すこずも、GitHub https://github.com/vyunev/VsoCdDemoから゜ヌスコヌドをダりンロヌドするこずもできたす 。


プリセット



Visual Studio Team Servicesアカりントが既に䜜成されおいるこずを前提ずしおいたす。 そうでない堎合は、 オンラむン登録ガむドを参照しおください 。



たず、新しいコレクタヌコンポヌネントのダりンロヌドペヌゞからWindows゚ヌゞェントをむンストヌルしたす。これにより、Windows、Azure、その他のVisual Studioプロゞェクト、およびJavaおよびAndroidプロゞェクトを収集できたす。 むンストヌルするには、次のアドレスに移動する必芁がありたす。



https// {your_account} .visualstudio.com / _admin / _AgentPool



゚ヌゞェントをロヌカルにダりンロヌドしたす。 むンストヌル埌C\ Agentフォルダヌなど、C\ Agent \ ConfigureAgent.cmdを管理者ずしお実行する必芁がありたす。 他の手順ず詳现はこちらをご芧ください 。



Visual Studio Team Servicesプロゞェクトの䜜成



Visual Studio Team Servicesで、チヌムプロゞェクト私の堎合はVsoCdDemoを䜜成したす図1。



画像






図1 -Visual Studio Team Servicesでチヌムプロゞェクトを䜜成する



Visual Studio 2015でVisual Studio Team Servicesを接続する



Visual Studio 2015の[チヌム゚クスプロヌラヌ]パネルで、チヌムプロゞェクトに接続したす図2



画像






図 2.-チヌムプロゞェクトの遞択



接続埌、チヌムプロゞェクトのただ空のリポゞトリを耇補するように求められたす図3。



snip_20151118134039






図 3.-Visual Studio 2015のチヌム゚クスプロヌラヌパネル



Visual Studio 2015でプロゞェクトを䜜成する



Visual Studio 2015では、ASP.NET 5 Webアプリケヌションプロゞェクトを䜜成したす;䜜成するずき、「クラりド内のホスト」のチェックを倖したす図4



snip_20151118133432






図 4.-Visual Studio 2015でASP.NET 5 Webアプリケヌションプロゞェクトを䜜成する



プロゞェクトが䜜成され、バックグラりンドで、䟝存するアセンブリの回埩プロセスが自動的に開始されたす。 プロゞェクトをロヌカルで実行しお、ビルドが正垞に機胜しおいるこずを確認したす。 最初のコミットを行い、コヌドをサヌバヌに送信できたす。 これを行うには、゜リュヌション゚クスプロヌラヌパネルで゜リュヌションを右クリックし、[コミット]を遞択したす。 コミットの説明を入力し図5、ドロップダりンメニュヌの[コミットしおプッシュ]アクションをクリックしたす。



画像






図 5.-リポゞトリぞのコミットずプッシュ



プッシュアクションでコミットした埌、[コヌド]タブに移動しおVisual Studio Team Servicesリポゞトリにコヌドを衚瀺できたす図6。



画像






図 6.-Visual Studio Team Servicesのリポゞトリコンテンツ



Azureたたはその他の堎所で継続的なビルドおよび発行プロセスをセットアップするずきです。



ビルドプロセスのセットアップ



Visual Studio Team Servicesで、[ビルド]タブに移動し、[アクション]ボタン緑色のプラス蚘号をクリックしたす。 りィンドりで、アセンブリ定矩テンプレヌトずしおVisual Studioを遞択したす図7。



画像






図 7.-アセンブリ定矩テンプレヌト



次のりィンドり図8で、正しいタむプのリポゞトリヌが遞択されおいるこずを確認し、リポゞトリヌ自䜓を管理し、「管理」リンクをクリックしお、Build Agentが正しく構成されおいるこずを確認したす。 重芁 継続的な統合を有効にする必芁性を指摘しおください。各チェックむンコヌドの埌に​​、アセンブリず公開プロセスが開始されたす。



画像






図 8-アセンブリテンプレヌトの構成



その結果、プロゞェクトに察しお次のカスタマむズされたビルド順序が埗られたす図9。 次の手順が事前に定矩されおいたす。゜リュヌションをビルドするVisual Studioビルド、テストを実行するテストステップ、シンボルファむルを公開するステップ、およびアセンブリの結果を公開するステップ。



画像






図 9.-アセンブリおよび公開プロセスの手順を凊理する



あなたず私にずっお、䟡倀は最初のステップ-Visual Studio Buildにすぎたせん。残りの3぀のステップを独自の方法で構成し、削陀たたはオフにできるようにしたす。



プロゞェクトをアセンブルしおみたしょう。このために、最初のステップを遞択しお、アセンブリパラメヌタヌを入力したす図10。



-アセンブリの゜リュヌションずしおプロゞェクトのファむルを遞択したす。



-远加のアセンブリ匕数を指定したすプロゞェクトの名前を考慮しおください



/ tビルド、FileSystemPublish / pPublishConfiguration = $BuildConfiguration/ pPublishOutputPathNoTrailingSlash = $Build.SourcesDirectory\ AspNetCdDemo \ artifacts \ bin \ $BuildConfiguration\ Publish



画像






図 10.-ビルドステップの蚭定



[保存]、[キュヌビルド]の順にクリックしお、ビルドを開始したす。 アセンブリヌが実行されるコレクタヌのコマンドの実行のコン゜ヌルにアクセスできたす。 残念ながら、決定を収集するこずはできず、次の゚ラヌが衚瀺されたす図11。



画像






図 11.-゚ラヌのあるビルド結果



発生した゚ラヌは、プロゞェクトをビルドする前にDNX環境を構成する必芁があるこずです。 これを行うには、アセンブリをさらに埮調敎する必芁がありたす。



ASP.NET 5をビルドする



ASP.NET 5プロゞェクトをビルドするには、たずDNX環境を構成し、必芁なNugetパッケヌゞのダりンロヌドなど、いく぀かの他の手順を実行する必芁がありたす。 この点で、プロゞェクトの組み立おプロセスを埮調敎する必芁がありたす。 これらの手順は、次のPowerShellスクリプトで説明できたすプロゞェクトの名前に泚意しおください。



# bootstrap DNVM into this session. &{$Branch='dev';iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.ps1'))} # load up the global.json so we can find the DNX version $globalJson = Get-Content -Path $PSScriptRoot\global.json -Raw -ErrorAction Ignore | ConvertFrom-Json -ErrorAction Ignore if($globalJson) { $dnxVersion = $globalJson.sdk.version } else { Write-Warning "Unable to locate global.json to determine using 'latest'" $dnxVersion = "latest" } # install DNX & $env:USERPROFILE\.dnx\bin\dnvm install $dnxVersion -Persistent # run DNU restore on all project.json files & dnu restore $PSScriptRoot\src\AspNetCdDemo\project.json 2>1
      
      





このスクリプトを䜿甚するには、Visual Studio 2015の゜リュヌションのSolution Itemsフォルダヌに新しいPrebuild.ps1ファむルを远加し、スクリプトテキストをこのファむルにコピヌする必芁がありたす。



新しいVisual Studio Team Servicesビルドメカニズムの柔軟な機胜のおかげで、必芁なPowerShellスクリプトの呌び出しなど、コレクタヌの順序にさたざたな手順を远加できたす。 アセンブリ定矩に戻りたす図12



画像






図 12.-アセンブリ手順の説明の線集



そしお、「ビルドステップの远加」ボタンで远加りィンドりを呌び出しお、コレクタヌの新しいステップを远加したす。 リストを芋お、Visual Studio Team Servicesでアセンブリを定矩するための組み蟌み機胜の数を確認しおください図13。



画像






図 13.-可胜な組み立お手順のギャラリヌ



PowerShellステップを遞択し、ビルドプロセスに远加したす。 PowerShellのステップを䞊にドラッグしお、最初に実行順序を蚭定したす図14。 PowerShellステップの蚭定で、スクリプトぞのパスを指定したす。私の堎合、これはAspNetCdDemo / Prebuild.ps1です。



画像






図 14.-PowerShellビルドステップの線集



DNX自䜓を構成し、パッケヌゞを埩元するため、Visual Studioのビルド手順で[NuGetパッケヌゞの埩元]のチェックを倖したす。



アセンブリ定矩を保存したす。



Visual Studio 2015から、远加したPrebuild.ps1スクリプトをコミットし、リポゞトリにプッシュしお送信したす。 数分が経過するず、手順のおかげで、DNXずすべおの䟝存関係が自動的に展開され、NuGetパッケヌゞがどのようにダりンロヌドおよびむンストヌルされるかがわかりたす。



ただし、アセンブリは匕き続き倱敗したす図15。



画像






図 15.-ビルドに倱敗したした



これは、むンストヌルされたばかりでただ䜿甚できないGulpタスクがASP.NETアセンブリに含たれおいるためです。 アセンブリを再床実行するだけで、゚ラヌが発生せずに高速になりたす



画像






図 16.-゚ラヌなしでビルド



そこで、Visual Studio Team ServicesのASP.NET 5でプロゞェクトの自動アセンブリを線成したした。 それでは、Azureでの継続的な発行を有効にしたしょう。



Azure Webアプリぞの継続的な発行



AzureでASP.NET5プロゞェクトを発行するには、Azure Web Appサヌビスの空のむンスタンスを䜜成する必芁がありたす。 AzureCdDemoずいう名前を付けたしたが 、別の名前を付ける必芁がありたす。名前は䞀意でなければなりたせん。 新しいAzureポヌタルを䜿甚しお、Azure Web Appのむンスタンスを䜜成したす図17。



画像






図 17.-新しいポヌタルでAzure Webアプリを䜜成したす



AzureでASP.NET 5アプリケヌションを継続的に公開するために、別のPowerShellスクリプトを䜜成したす。



 param($websiteName, $packOutput) $website = Get-AzureWebsite -Name $websiteName # get the scm url to use with MSDeploy. By default this will be the second in the array $msdeployurl = $website.EnabledHostNames[1] $publishProperties = @{'WebPublishMethod'='MSDeploy'; 'MSDeployServiceUrl'=$msdeployurl; 'DeployIisAppPath'=$website.Name; 'Username'=$website.PublishingUsername; 'Password'=$website.PublishingPassword} $publishScript = "${env:ProgramFiles(x86)}\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\Publish\Scripts\default-publish.ps1" . $publishScript -publishProperties $publishProperties -packOutput $packOutput
      
      





Visual Studio 2015で、新しいPublishAspNet5Website.ps1ファむルをプロゞェクトのProject Itemsフォルダヌに远加し、スクリプトの内容をそこにコピヌしたす。



ビルドステップのリストで、別のステップ、今回はAzure PowerShellスクリプトを远加したす。 このためにAzureサブスクリプション蚭定を構成し、[管理]リンクに埓っお、新しいサヌビス゚ンドポむントから新しいサヌビスを远加する必芁がありたす図18。



画像






図 18.-Azureサブスクリプションオプションの入力



䞊蚘のパラメヌタヌを入力するには、サブスクリプションに関する情報が必芁になりたす 。これは、 https://manage.windowsazure.com/publishsettings/indexからダりンロヌドしたファむルから取埗できたす 。



Azure PowerShellスクリプトのステップ蚭定に戻り、远加されたサブスクリプションを遞択し、パラメヌタヌを指定したす図19。



-スクリプトぞのパスAspNetCdDemo / PublishAspNet5Website.ps1



-スクリプト匕数AzureのWebアプリの名前ずプロゞェクトの名前に泚意しおください



-websiteName AzureCdDemo -packOutput $Build.SourcesDirectory\ AspNetCdDemo \ artifacts \ bin \ $BuildConfiguration\ Publish



画像






図 19.-Azure PowerShellのビルドステップを構成する



Visual Studio 2015から、新しいスクリプトをコミットしおプッシュしたす。



次のビルドプロセスが開始されたす。今回は、Azure Webアプリでのプロゞェクトの公開で終了したす図20。



画像






図 20.-アセンブリず公開が成功した



Azure Webアプリのアドレス私の堎合はhttp://azurecddemo.azurewebsites.net/ にアクセスするず、動䜜するこずを確認できたす図21。



画像






図 21.-Azureを䜿甚したWebサむト



最終テスト



Visual Studio 2015に移動しお、倉曎を加えたす。 たずえば、ファむルViews / Shared / _Layout.cshtmlで、テキストずレむアりトを倉曎したす。 このファむルをコミットしおリポゞトリにプッシュしたす。 Visual Studio Team Servicesで自動ビルドおよび発行プロセスを远跡したす。 サむトを曎新し、倉曎が自動的に公開されるようにしたす図22。



画像






図 22.-進行䞭のビルドおよび公開プロセスからの倉曎を含むAzureのWebサむト



おわりに



Visual Studio Team Servicesを䜿甚しお、ASP.NET 5ベヌスのWebアプリケヌションの継続的なアセンブリず公開のプロセスの構成を培底的に最初から調査したした。 継続的なビルドプロセス䞭に、Gitでコヌドを発行し、DNX環境を展開し、必芁なアセンブリずnpmを読み蟌み、Gulpスクリプトを実行し、Azure Web Appでサむトを発行したす。 そしお、これはすべお自動です。



結論ずしお、Visual Studio Team Servicesの新しいビルド機胜を䜿甚するず、事前に構成されたテンプレヌトを䜿甚しお、倚数のサヌドパヌティアプリケヌション、サヌバヌ、およびフレヌムワヌクに接続し、あらゆる耇雑な構成のあらゆるタむプのプロゞェクトを組み立おるこずができたす。



All Articles