久し振りに de:code で話をしてきました。周りの人からはアニメタイトルセッションと茶化されましたが、ちゃんと意味があって付けているのです。多分。
おかげさまで、今回は前回よりも広い部屋が割り当てられ、想像以上の大勢の方に参加していただくことが出来ました。App Service on Linux について知ってもらえたなら幸いです。
危うく私のセッションによって、デプロイ優先順位が左右される展開になるとこでした。
しばやん先生のセッションの入り具合は、日本リージョンへのデプロイの優先順位の参考にするかも
— 帝国兵 (@superriver) 2017年5月24日
まだプレビューのサービスなので、当日までいろいろとアップデートがあるのではないかとか、スピーカー控室のネット回線が不調でテザリングをする羽目になったとかいろいろありますが、当日のデモは全て上手くいきました。App Service Plan から作成したので、少し時間はかかりましたが。
今回のセッションはシャッター音の鳴るカメラは禁止と最初にアナウンスした関係で、使用したスライドを既に docs.com で公開しています。不要なページは削除してますが、内容は同一です。
最後のデモでは GitHub でホストしているリポジトリに対して CircleCI で Docker Image をビルドし、App Service on Linux に自動デプロイする処理を 4,5 分で構築しました。
自動化してこそクラウドを使うメリットが出てくるというものです。
基本的な流れは以前に書いたエントリと変わってはいないですが、CircleCI 2.0 に切り替えたのと ASP.NET Core アプリのビルドと Azure CLI の実行に Docker を使いました。
デモで使用した circle.yml は以下のようになってます。もう少し最適化は出来ると思いますが、まずは動くものを作ってからの方が良いでしょう。
version: 2 executorType: machine stages: build: workDir: ~/app steps: - type: checkout - type: shell name: Build Application command: docker run -it -v $(pwd):/app --workdir /app microsoft/aspnetcore-build:1.1.2 bash -c "dotnet restore && dotnet publish -c Release -o ../publish/app" - type: shell name: Build Docker Image command: docker build --rm=false -t shibayan/decode-demo:v$CIRCLE_BUILD_NUM ./publish/app - type: shell name: Run Test command: | docker run -d -p 8080:80 shibayan/decode-demo:v$CIRCLE_BUILD_NUM sleep 5 curl --retry 10 --retry-delay 5 -v http://127.0.0.1:8080 - type: deploy name: Push to Docker Hub command: | docker login -u $DOCKER_USER -p $DOCKER_PASS docker push shibayan/decode-demo:v$CIRCLE_BUILD_NUM - type: deploy name: Deploy to App Service command: | docker run -it azuresdk/azure-cli-python bash -c "az login --service-principal -u $AZURE_USER -p $AZURE_PASS --tenant $AZURE_TENANT && az webapp config container set -c shibayan/decode-demo:v$CIRCLE_BUILD_NUM -n WEBAPP -g RESOURCEGROUP"
2.0 向けのドキュメントは以下のページにまとまっています。まだベータですが使う価値はあります。
CircleCI 2.0 になって CI での各ステップを独自に定義できるようになり、記述が格段にわかりやすくなりました。今回は Docker Image のビルドが必要だったので executorType として machine を指定しましたが、docker を使うと CI の実行に使うイメージを指定できるようになり、更に便利です。
App Service on Linux は今年中には GA するという話もあるので、目が離せませんね。