Visual Studio Team ServiceでAzure Web Appsへデプロイする
Visual Studio Team Service(VSTS)はもう少し普及してもいいのでは?と思っています。Microsoftがかなり丁寧にドキュメントを公開してくれているのですが、それ以外の情報がなかなか少ない印象ですね。特に日本語での情報はあまり無い。積極的に情報発信していければと思います。
今回は、VSTSのBuild&Releaseの機能を中心にできるだけわかりやすくまとめておきたいと思います。Goalは、VSTSのリポジトリ(Git)にPushすると、Build Taskが実行され、Azure Web AppsにアプリケーションがDeployされるようにすることです。
Git
まずは、VSTSのGitを使えるようにしていきましょう。前回、書いたので細かいことはこちらをみてください。
Microsoftのドキュメントで公開していたNode.jsのサンプルアプリをGitに登録して、ビルド、デプロイとつなげていきたいと思います。
Microsoftサンプルアプリ
実は、VSTS使わなくてもほぼ同じことがAzureとGitHubがあれば出来ます(その方法は過去記事を参照ください)。ただ柔軟性は全然違うのでVSTSでやるメリットはあるかと思います。VSTSのGitにはサンプルコードをPushしておいてください。
Build Definition
サンプルアプリケーションをビルドするタスクを定義していきましょう。VSTSのプロジェクトにアクセスしてBuild&ReleaseからBuildsの画面を表示します。+NewでCreate new build definitionから、まずTemplateを選択します。まだPreview版ですが、NodeJS with GulpというTemplateを使っていきましょう。Templateはよく使う組み合わせであらかじめ準備してくれている便利なものです。もちろん、Empty Templateで1からビルドタスクを組み合わせて作っても構いません。
Templateを選択するとRepositoryやBranchを選択します。今回は、masterにマージされた時にBuildしたいので、masterにしてます。Pushされた時に自動的にビルドをまわしたい場合は、Continuous integrationにチェックを入れます。
NodeJS with GulpというTemplateでは、
- npm install
- Run gulp task
- Archive files
- Copy publish Artifact drop
という4つのBuild Stepが最初から定義されます。
これらの設定を埋めていけばBuild Definitionが完成します。簡単ですね。しかも、今回は全部デフォルト設定で問題ないのでそのままの定義でビルド出来てしまいます。早速、ビルドしてみたいと思います。Queue new build…からビルドの実行が出来ます。
特に何も指定しなくてもOKなのでそのままOKします。
画面が切り替わって、ビルドの実行過程が見れます。コマンドラインで実行されている状態が見えるわけですね。エラーになってもすぐにわかります。
緑になれば、無事成功です。ビルドの成果物はArtifactから確認できます。
これでビルド定義は完成です。今回はCIの設定をしているので、masterにmarge(Push)されれば、このビルド定義が毎回走ることになります。
Release Definition
ビルドの実行まで設定できたので、次にReleaseの定義を作っていきたいと思います。その前に、リリース先のAzure Web Appsが必要なので事前にサクッと作成しておいてください。過去記事参考にしてもらえれば一応手順はわかるかと思います。
これの前半部分を参考にしてもらえればと思います。
Azureの設定が出来たら、VSTSのプロジェクトにアクセスしてBuild&ReleaseからReleasesの画面にアクセスします。+からCreate release definitionを選択し、新しく定義を作っていきます。Buildの際と同じようにTemplateを選ぶことが出来るので、今回はAzure App Service Deploymentを使っていきます。
Releaseの定義でとりあえず、設定しないといけないのは、どのAzure App Serviceにデプロイするのかという部分です。Azure subscriptionとApp Service Nameを各環境に合わせて設定してくださいね。subscriptionはアカウント認証が求められたはずです。
これでReleaseの定義は完了です。Azureがデプロイ先だとすごく簡単ですね。
初回Deploy
Release定義が出来たのでAzureにデプロイしていきましょう。+ReleaseからCreate ReleaseでRelease出来ます。そうすると、in Processになって、正しくデプロイされれば、SUCCEEDEDになります。これでデプロイできたらしいです。
Azure側から、Web Appsにアクセスして、アプリケーションが動いているのか確認しておきましょう。
ちゃんとHello Worldが出ましたね。すごく単純なアプリケーションですが、VSTSを使って、GitからBuildしてDeployまでの一連の定義が出来ました。CI/CDが出来る環境は整ったので、アプリケーションをどんどん拡張していけばいいだけですね。
VSTSは便利で簡単だぞ・・・
もう少しちゃんと触って評価をしていきたいとおもいます。皆さんの参考になれば幸いです。では。