ごった煮

色々な事を書いてます

Azure Pipelines で Pull Request に連動した App Service のプレビュー環境を構築する

Azure Pipelines で Pull Request を作った際に、専用のテスト環境を立ち上げてテストしたいということで、そういった事が出来ないか検証しました。

ベースは、しばやんさんの GitHub Actions のブログを参考にさせていただきました。

Azure App Service と GitHub Actions を使って Pull Request のプレビュー環境を自動で作成する - しばやん雑記

やってみよう

基本のインフラを作る

まず、次の基本のインフラを作ります。

  • リソースグループ
  • App Service Plan (S1)
  • App Service

Bicep でサクッと行きましょう

App Service を作る Bicep

Create App Service

これでデプロイする為の箱が出来ました。

ついでに、スロットを作る Bicep です。

こちらは、後程パイプライン上から呼び出します。

CreateStagingSlot

パイプラインを作る

今回の本題である、パイプラインを作ります

アプリケーションは、スタンダードな 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 を起点に、スロットを削除するような実装を行う必要があります。

それについては、また今度