しばやん雑記

ASP.NET Core とメイドさんが大好きなフリーランスのプログラマーのブログ

Azure Pipelines の Multi-stage pipelines でデプロイの承認機能を利用する

Azure Pipelines の YAML だと使えない機能だったデプロイの承認が、ちょっと前に使えるようになっていたらしいです。Pipeline Caching ばかり見てたので気が付きませんでした。

承認を使いたいケースが地味にあるので、手元のプロジェクトで試してみました。

承認は Deployment jobs と Environments が必要なので、デプロイを通常の Job で書いている場合は変更する必要があります。以前にその辺りの使い方は書いてあるので参考にしてください。

残念ながら Environments が現状はほぼ Kubernetes 専用になっていますが、App Service / Azure Functions に対応してくれると最高に使い勝手が良くなりそうなので期待しています。

Environments に承認の設定を追加

Environments を開くと右上のボタンに Checks が増えているはずなので、そこから承認の設定を行います。

f:id:shiba-yan:20190815173924p:plain

将来的にはもう少し機能が増えそうな名前をしていますが、今は人による承認のみです。

誰がデプロイを承認出来るかを追加するだけの、非常に簡単な設定です。

f:id:shiba-yan:20190815173935p:plain

個別のユーザーだけではなく、グループも追加出来るようになっています。こういう時に AAD と連携していると、案外便利なのかもしれません。

f:id:shiba-yan:20190815175129p:plain

これで設定が完了なので、実際に何かをデプロイさせてみて試してみます。

デプロイを実際に承認する

承認機能を設定した状態でパイプラインを動かすと、Deployment job でレビュー待ちとなって止まります。この時に Review ボタンが表示されるので、そこから今回のデプロイを継続するか、却下するか選択します。

f:id:shiba-yan:20190815174318p:plain

レビュー待ちのタイムアウト時間は謎ですが、極端に短いというわけではなさそうです。

Review ボタンを選ぶと、デプロイの可否やコメントを付けたりと、コントロールが可能です。

f:id:shiba-yan:20190815173958p:plain

Approve を選ぶと、そのまま Deployment job が継続されてデプロイが行われます。

f:id:shiba-yan:20190815174001p:plain

誰が許可したかという情報も残っているので、監査という観点でも便利そうです。

f:id:shiba-yan:20190815174444p:plain

Environments 毎に設定が出来るので、Multi-stage pipelines でもステージング環境への自動デプロイが完了後、本番へデプロイする前に承認待ちにするという運用が簡単に組めるようになりました。

後は Environments の機能拡充が待たれますね。Kubernetes だけでは勿体ないです。