Azure Pipelines で Pull Request を作った際に、専用のテスト環境を立ち上げてテストしたいということで、そういった事が出来ないか検証しました。
ベースは、しばやんさんの GitHub Actions のブログを参考にさせていただきました。
Azure App Service と GitHub Actions を使って Pull Request のプレビュー環境を自動で作成する - しばやん雑記
やってみよう
基本のインフラを作る
まず、次の基本のインフラを作ります。
- リソースグループ
- App Service Plan (S1)
- App Service
Bicep でサクッと行きましょう
App Service を作る Bicep
これでデプロイする為の箱が出来ました。
ついでに、スロットを作る Bicep です。
こちらは、後程パイプライン上から呼び出します。
パイプラインを作る
今回の本題である、パイプラインを作ります
アプリケーションは、スタンダードな ASP.NET Core MVC を想定しています。
その他の構成の場合は、アプリケーションをビルドする部分を適宜読み替えてください。
PullRequest With App Service staging slot
動作としては、次のようになっています。
- master ブランチ向けの PR が作られたら実行開始
- アプリケーションをビルドする
- 成果物を zip に固めて artifact にアップロードする
- 対象の App Service にスロットを作成する(pr-{PR の Id} という名前で作られます)
- 成果物をダウンロードする
- 成果物をデプロイする
まとめ
PR に連動するプレビュー環境の立ち上げには成功しました。
ですが、GitHub Actions と異なり、Azure Pipelines では、PR がクローズされたタイミングで、Pipeline をトリガー出来ません。
その為これ以外にも、PR がクローズされたら送信される Service Hook を起点に、スロットを削除するような実装を行う必要があります。
それについては、また今度