エンジニアの技術的独り言

技術的な独り言を書いています。独り言なのでどうでもいいことです。でも他の人の参考になればとっても嬉しいです。

DevOpsハッカソン (デプロイの自動化編)

昨年12月に行ったDevOpsハッカソンの詳細な内容です。

今回はデプロイの自動化について書きます。(作業時間にして3~4時間ほどの内容)

 

下記のようにASP.NETのWebアプリケーションを作成してデプロイの自動化をやってみました。

f:id:takkuuuuun:20160104192854p:plain

 

VSTS上でBUILD定義の作成

f:id:takkuuuuun:20160104181747p:plain

build定義のテンプレートはXamarinやXcodeなどもあります。

今回はVisual Studioを選択。

f:id:takkuuuuun:20160104183640p:plain

リポジトリVSTS上のGitを使用しました。

Default agent queue は「Hosted」を選択。「Hosted」を選択できない場合は確かアカウントの権限などの問題だった気がします。。。あまり覚えてないです。。。

Continuous integrationにチェックを入れるとgitの該当ブランチにcheck-inされる度にビルドされます。

f:id:takkuuuuun:20160104183912p:plain

デフォルトで上記のように

  • ソリューションのビルド
  • テストの実行
  • 発行情報のパス
  • 発行の設定

があります。

f:id:takkuuuuun:20160104191245p:plain

修正した項目は、

  1. ビルドのMS Build Argumentsを「/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.stagingDirectory)"」に書き換え。
  2. Copy and Publish Build ArtifactsのCopy Rootを「$(build.stagingDirectory)」にContentsを「**\*」に書き換え
  3. Copy and Publish Build Artifactsをもう一つ追加して、Copy Rootは空Contensを「**\*」に書き換え。

Copy and Publish Build Artifactsを二つにしたのはデプロイした後にデプロイ環境上でテストを流したりするためのものなので今回必ずしも必要はありません。

 

上記のようにしてビルドまでは完了できました。

 

VSTS上でRELEASE定義の作成

プロジェクトにリソースグループの追加。

f:id:takkuuuuun:20160104193258p:plain

テンプレートはWeb Appを選択。

f:id:takkuuuuun:20160104193430p:plain

WebSite.param.dev.jsonのvalueを適当に変更。

次にAzureのポータル上でリソースグループの作成。

f:id:takkuuuuun:20160104194230p:plain

 

 そしてApp Serviceの作成。

このあたりは適当に名前を付けるだけ。

f:id:takkuuuuun:20160105162303p:plain

次にVSTS上でのAzure Subscriptionの設定。

f:id:takkuuuuun:20160105164905p:plain

上記のページにてAzureのSubscriptionの設定が可能。

Credentialsを選択して認証情報を入力して設定しました。

アカウントの権限によって設定できないので注意が必要。

下記はRelease定義の作成画面。

f:id:takkuuuuun:20160104192417p:plain

Releaseのテンプレートは上記のようにクラウドサービスとWebSiteの2種類あります。

今回はWebSiteを選択。

f:id:takkuuuuun:20160105163632p:plainデフォルトでAzure Web App DeploymentとVisual Studio Testが追加されています。

一番左のEnvironmentではDevelopmentやReleaseなどの環境を設定しておくことで、各環境へのリリースを段階的に作成できます。

Devへのデプロイ⇒テスト⇒承認⇒Releaseへのデプロイなどのステップを組むことも可能です。

Azure Subscriptionは先程設定したものを選択。

Web App Nameはポータルで確認できるのでそれを入力。

(選択できるように映っていますができません)

あとはCreate Releaseするだけでリリースが実行されます。

 

※大部分を思い出しながら書いたので間違ってたらすみません。

■感想

サンプルアプリのデプロイだけですが、かなり短時間で自動化できました。

個人的にはリリース前に承認プロセスを入れれるところやリソースグループの設定によってすぐに別の環境へと持っていけるように作れるところなどがとても魅力的だなと感じました。

早く実際のプロジェクトへと反映させたいです。

 

次回はPowerBIについて書こうと思います。