Gitea&DroneでCI/CD環境構築 や Gitea&Drone&リバースプロキシ で構築した環境を Azure の仮想マシン上に作成し、
処理ソースを git push すれば Azure リソースを自動でデプロイする仕組みを構築する。
尚、Gitea、Drone の構築に関しては Gitea&DroneでCI/CD環境構築 や Gitea&Drone&リバースプロキシ で実施した内容と変わらない為、
当記事では Azureリソースの デプロイや再起動に係る事項のみを記載する事とする。(下図のオレンジ枠のテキスト)
Azure CLI がセットアップ済みの docker イメージが公式で提供されているので、これを利用する。
(参考: Docker コンテナーでの Azure CLI の実行 )
.drone.yml
kind: pipeline type: docker name: default steps: - name: build image: .... commands: - "....." when: branch: - master - name: deploy # Azure CLI が利用できる dockerイメージ image: mcr.microsoft.com/azure-cli # az コマンドの発行 commands: - "az ....." - "az ....." when: branch: - master
az コマンドから Azureリソースを扱うには、事前に az login が必要になるが、このようなケース(自動運転)ではどのようなログイン方法が最適なのか。
以下のドキュメントをみる限り、サービス プリンシパルを使ってサインインするのが良さそう。
https://docs.microsoft.com/ja-jp/cli/azure/authenticate-azure-cli?view=azure-cli-latest#sign-in-with-a-service-principal
以下、抜粋
サービス プリンシパルの利用方法については、別記事 Azureサービスプリンシパルの使用 に記載している為、ここでは省略する。
サービスプリンシパルを使用して az login をする際のコマンドは以下のようになる。
az login --service-principal -u http://サービスプリンシパル名 -p ./my_cert.pem --tenant テナント
Runner で drone-runner-docker を利用している場合、証明書(上記のmy_cert.pem) を渡すにはひと手間必要となる。
※サービスプリンシパル名やテナントは環境変数として渡すとして。
https://docker-runner.docs.drone.io/configuration/volumes/host/