æè¿ã 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ã¯ã©ãŠãã§ã®èªåã¢ã»ã³ããªããã³ãããã€ãŸã§ã®å®å šãªãµã€ã¯ã«ãæäŸããæ¹æ³ã確èªããŸãïŒã©ãã§ãå¯èœã§ãïŒã
ã¢ããã€ã¹ïŒ ãã¹ãŠèªåã§è©Šãããšãã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ïŒã

å³ 3.-Visual Studio 2015ã®ããŒã ãšã¯ã¹ãããŒã©ãŒããã«
Visual Studio 2015ã§ãããžã§ã¯ããäœæãã
Visual Studio 2015ã§ã¯ãASP.NET 5 Webã¢ããªã±ãŒã·ã§ã³ãããžã§ã¯ããäœæããŸã;äœæãããšãããã¯ã©ãŠãå ã®ãã¹ããã®ãã§ãã¯ãå€ããŸãïŒå³4ïŒ

å³ 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ã®æ°ãããã«ãæ©èœã䜿çšãããšãäºåã«æ§æããããã³ãã¬ãŒãã䜿çšããŠãå€æ°ã®ãµãŒãããŒãã£ã¢ããªã±ãŒã·ã§ã³ããµãŒããŒãããã³ãã¬ãŒã ã¯ãŒã¯ã«æ¥ç¶ããããããè€éãªæ§æã®ããããã¿ã€ãã®ãããžã§ã¯ããçµã¿ç«ãŠãããšãã§ããŸãã