はじめに
以前、VSTSとAzure App ServivesのCI/CDの話を書きました。
今はちょっとやり方が変わっているので、改めて紹介します。VSTSで書いていますが、基本はJenkinsやTFSでも変わりありません。
Build定義作成
VSTSのビルドテンプレートからVisual StudioもしくはASP.NET(Preview)を選んでください。
dotnet restoreコマンドでもいいのですが、せっかくテンプレートに入っているNugetタスクを使います。重要なポイントとして、必ず、3.5以上を選択してください。ここでは4.0にしています。
NuGet 4.0はHosted VS2017であれば入っています。
Visual Studioタスクで使用するVisual Studioを必ずVisual Studio 2017にします。
Azure App Serviceへのデプロイにwebdeployを使うので、dotnet publishコマンドを使用します。引数に以下の値を指定します。
publish -c $(BuildConfiguration) -o $(Build.ArtifactStagingDirectory)
これで、ビルド構成(Release, Debugなど)でビルドした結果を -o で指定された出力先にコピーします。ArtifactStagingDirectoryでエージェントの中間生成領域です。
WebDeployはzipファイルなので、ArtifactStagingDirectoryに出力した内容をzipファイルに圧縮します。
生成されたzipファイルをリリース機能でデプロイするための領域にコピーします。
Optionsの中にあるAgentsで必ずHosted VS2017を選んでください。これで準備完了です。
Release機能を使う
リリース定義を作成し、App Serviceへのリリース用の環境を作ります。ここではJapan Westを作りました。
注意点として、Stagingスロットを作っていない場合、一度App Serviceをstopで止めてから入れ替えしないといけないようです。確かこれはASP.NET Coreのissueにも挙がっていた気がします。
止めて、デプロイしてから再度startタスクを実行します。容量にもよりますが、それなりに時間がかかるので、Staging作ってswapさせたほうがいいように思います。
成果物の受け渡しに関しては、以前の記事などを参照してください。