はじめに
Web Appsにアプリケーションをデプロイする場合、いくつか方法があります。
その中でも、Microsoftが提供するVisual Studio Team Services(VSTS)は、非常にAzureのサービスとの親和性が高いVCSです。
そこで今回は、AzureのWeb Appsに対してVSTSを使用してアプリケーションをデプロイする方法をご紹介します。
※今回は、VSTSの新しいUIをベースに説明します。
VSTSにAzureのサブスクリプションを登録する
はじめにVSTSにAzureのサブスクリプションを登録します。
サブスクリプションの登録には、Service PrincipalやテナントIDなどが必要になります。
ここのスクリプトを使用するとそれらが取得できるのでローカルの適当な場所に保存します。
実行時に、登録するサブスクリプション名とService Principal用のパスワードを聞かれるので、入力します。
実行が完了すると
- Connection Name
- Subscription Id
- Subscription Name
- Service Principal Id
- Service Principal Key
- Tenant Id
が表示されます。表示されたものをそれぞれどこかにメモしておきましょう。
これらの情報が取得出来たらVSTSに設定します。
下記の図のように画面上部から設定画面に移動してAzure Resource Managerを選択します。
そこで開いた画面に先ほど取得した情報を入力します。
入力後にVerify connectionを押してVerifiedになったら登録完了です。
ビルド定義を作成する
VSTSからWeb Appsにデプロイする場合は、ビルド時にWeb Deploy パッケージを作成する必要があります。
VSTSのトップ画面上部からBuildを選ぶとビルド定義管理画面に移動します。その中のNewを選択します。
Newを選択すると新規でのビルド定義の作成画面が立ち上がります。
今回は、下図のようにVisual Studioを選択します。
テンプレートを選択したら、リポジトリとブランチを選択してデフォルトのビルド定義を作成します。
デフォルトのビルド定義が作成されたらビルドの設定をします。
今回は、下図のようにBuild SolutionのMSBuild ArgumentsでMSBuildの引数を追加します。
引数は
/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:CreatePackageOnPublish=true
を入れます。
これでWeb Deploy パッケージがビルド時に生成されるようになります。
次に、ビルドで生成された成果物を扱いやすいように別の場所にコピーします。
Copy Filesのタスクを追加して下記の図のように設定します。
これにより$(build.sourcesdirectory)*\obj$(BuildConfiguration)*\ 以下にWeb Deploy パッケージが配置されます。
最後にデプロイタスクを下記の図のように追加します。
今回は、ARMのWeb AppsにデプロイするのでDeploy AzureRM Web App を選択します。
サブスクリプションとデプロイするWeb Appsとパッケージの場所を指定して保存します。
デプロイする
ビルド定義が完成したらあとは、ビルドをしてデプロイするだけです。
下図のように画面上部にQueue new buildの項目があるのでそれを選択してビルドを実行します。
これでビルドが通ればそのままWeb Appsにデプロイまでが自動的に実行されます。
まとめ
CIなどが完了したらWeb Appsに自動デプロイするこの設定を行えば、毎回の面倒なリリース作業を簡略化して時間を有効活用できます。Gitではなく、TFVCを使ってバージョン管理をしていればゲートチェックインが通ったらデプロイといったことも可能です。
また、VSTSの特徴としてリリースの管理ができるため、例えば本番環境へのデプロイにたくさんの偉い人の許可が必要といった状況を自動化して許可が下りたら自動デプロイといったことも可能です。
業務の効率改善など、AzureとVSTSでできる部分がかなり多いと思うのでぜひ使用してみてください。