DevOpsハッカソン (デプロイの自動化編)
昨年12月に行ったDevOpsハッカソンの詳細な内容です。
今回はデプロイの自動化について書きます。(作業時間にして3~4時間ほどの内容)
下記のようにASP.NETのWebアプリケーションを作成してデプロイの自動化をやってみました。
■VSTS上でBUILD定義の作成
build定義のテンプレートはXamarinやXcodeなどもあります。
今回はVisual Studioを選択。
Default agent queue は「Hosted」を選択。「Hosted」を選択できない場合は確かアカウントの権限などの問題だった気がします。。。あまり覚えてないです。。。
Continuous integrationにチェックを入れるとgitの該当ブランチにcheck-inされる度にビルドされます。
デフォルトで上記のように
- ソリューションのビルド
- テストの実行
- 発行情報のパス
- 発行の設定
があります。
修正した項目は、
- ビルドのMS Build Argumentsを「/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.stagingDirectory)"」に書き換え。
- Copy and Publish Build ArtifactsのCopy Rootを「$(build.stagingDirectory)」にContentsを「**\*」に書き換え
- Copy and Publish Build Artifactsをもう一つ追加して、Copy Rootは空Contensを「**\*」に書き換え。
Copy and Publish Build Artifactsを二つにしたのはデプロイした後にデプロイ環境上でテストを流したりするためのものなので今回必ずしも必要はありません。
上記のようにしてビルドまでは完了できました。
■VSTS上でRELEASE定義の作成
プロジェクトにリソースグループの追加。
テンプレートはWeb Appを選択。
WebSite.param.dev.jsonのvalueを適当に変更。
次にAzureのポータル上でリソースグループの作成。
そしてApp Serviceの作成。
このあたりは適当に名前を付けるだけ。
次にVSTS上でのAzure Subscriptionの設定。
上記のページにてAzureのSubscriptionの設定が可能。
Credentialsを選択して認証情報を入力して設定しました。
アカウントの権限によって設定できないので注意が必要。
下記はRelease定義の作成画面。
Releaseのテンプレートは上記のようにクラウドサービスとWebSiteの2種類あります。
今回はWebSiteを選択。
デフォルトでAzure Web App DeploymentとVisual Studio Testが追加されています。
一番左のEnvironmentではDevelopmentやReleaseなどの環境を設定しておくことで、各環境へのリリースを段階的に作成できます。
Devへのデプロイ⇒テスト⇒承認⇒Releaseへのデプロイなどのステップを組むことも可能です。
Azure Subscriptionは先程設定したものを選択。
Web App Nameはポータルで確認できるのでそれを入力。
(選択できるように映っていますができません)
あとはCreate Releaseするだけでリリースが実行されます。
※大部分を思い出しながら書いたので間違ってたらすみません。
■感想
サンプルアプリのデプロイだけですが、かなり短時間で自動化できました。
個人的にはリリース前に承認プロセスを入れれるところやリソースグループの設定によってすぐに別の環境へと持っていけるように作れるところなどがとても魅力的だなと感じました。
早く実際のプロジェクトへと反映させたいです。
次回はPowerBIについて書こうと思います。