kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

VSTSでASP.NET CoreアプリのCI/CDを行う

はじめに

以前、VSTSとAzure App ServivesのCI/CDの話を書きました。

kkamegawa.hatenablog.jp

今はちょっとやり方が変わっているので、改めて紹介します。VSTSで書いていますが、基本はJenkinsやTFSでも変わりありません。

Build定義作成

VSTSのビルドテンプレートからVisual StudioもしくはASP.NET(Preview)を選んでください。

f:id:kkamegawa:20170505133249p:plain

dotnet restoreコマンドでもいいのですが、せっかくテンプレートに入っているNugetタスクを使います。重要なポイントとして、必ず、3.5以上を選択してください。ここでは4.0にしています。

NuGet 4.0はHosted VS2017であれば入っています。

f:id:kkamegawa:20170505133251p:plain

Visual Studioタスクで使用するVisual Studioを必ずVisual Studio 2017にします。

f:id:kkamegawa:20170505133218p:plain

Azure App Serviceへのデプロイにwebdeployを使うので、dotnet publishコマンドを使用します。引数に以下の値を指定します。

publish -c $(BuildConfiguration) -o $(Build.ArtifactStagingDirectory)

これで、ビルド構成(Release, Debugなど)でビルドした結果を -o で指定された出力先にコピーします。ArtifactStagingDirectoryでエージェントの中間生成領域です。

f:id:kkamegawa:20170505133220p:plain

WebDeployはzipファイルなので、ArtifactStagingDirectoryに出力した内容をzipファイルに圧縮します。

f:id:kkamegawa:20170505133221p:plain

生成されたzipファイルをリリース機能でデプロイするための領域にコピーします。

f:id:kkamegawa:20170505133225p:plain

Optionsの中にあるAgentsで必ずHosted VS2017を選んでください。これで準備完了です。

Release機能を使う

f:id:kkamegawa:20170505133223p:plain

リリース定義を作成し、App Serviceへのリリース用の環境を作ります。ここではJapan Westを作りました。

注意点として、Stagingスロットを作っていない場合、一度App Serviceをstopで止めてから入れ替えしないといけないようです。確かこれはASP.NET Coreのissueにも挙がっていた気がします。

止めて、デプロイしてから再度startタスクを実行します。容量にもよりますが、それなりに時間がかかるので、Staging作ってswapさせたほうがいいように思います。

成果物の受け渡しに関しては、以前の記事などを参照してください。