👌

Azure DevOps の リリース承認を利用したデプロイ制御

2023/12/19に公開

こちらのアドベントカレンダーの企画に参加させて頂きました🐤
https://qiita.com/advent-calendar/2023/azuredevops

はじめに

前回の記事に引き続き、リリースパイプラインの承認メカニズムについて詳しく見ていきましょう。
https://zenn.dev/yutakaosada/articles/0361b5184af34f

前回のおさらい
開発者が Azure Repos にソースコードをプッシュすると、ビルドパイプラインが起動し、Artifacts を生成します。続いて、リリースパイプラインがこれらの Artifacts を使用して Azure リソースへのデプロイを実行します。

本稿では、単一の Dev 環境だけでなく、Staging 環境も含むデプロイの流れを取り上げます。通常、Dev 環境へのデプロイが完了すると、その環境での検証が行われ、承認を経て Staging 環境へと反映されることが想定されます。つまりは、Dev 環境が適切であると判断された場合のみ、Staging 環境へのデプロイを実施したいと考えます。そこで、今回は Pre-deployment approval という機能を使ったリリースパイプラインの実装方法について解説します。この機能を利用することで、異なるステージ間の移行を効果的に管理できます。

全体像はこんな感じです。

1. リリース承認を設定

まず、リリースパイプラインを開き、承認が必要なステージにある稲妻マークをクリックします。

次に、Pre-deployment approval のトグルをオンに切り替えて、承認者(Approver)を指定します。タイムアウト設定は、このプロセスの有効期限を示します。これは日単位、時単位、分単位で設定可能です。

同時に、以下の承認ポリシーも設定できます。

  • リリースまたは展開をリクエストしているユーザーはそれを承認してはなりません
  • 承認を完了する前に、承認者の ID を再検証します。
  • 同じ承認者が前の段階を承認した場合は承認をスキップします

これで設定は完了です。[Save]ボタンを押して設定を保存してください。

2. 承認依頼を検知する方法

通常、Pre-deployment approval 機能を使用すると、承認者(Approver)は Azure DevOps を開き、対象のパイプラインページにアクセスして承認ボタンを押す必要があります。

ここでは、Microsoft Teams との連携により、Teams のスレッドに自動投稿される Approve・Reject ボタンをクリックするだけで、承認作業を完了できるような手順を見ていきましょう。

2.1 Azure DevOps の設定

Teams との連携を有効にするためには、Third-party application access をオンに設定する必要があります。Teams は First-party アプリケーションのように思えるかもしれませんが、この設定は必要です。Azure DevOps を開き、Organization Settings にて、Third-party application access via OAuth をオンにします。

2.2 Teams へ Azure Pipelines を導入

Teams を開き、アプリタブから Azure Pipelines を検索し、追加します。Public および Private のいずれの設定でも問題ありません。

追加をクリックし、通知を受け取りたいチームに追加します。

その後、追加されたチームに次のような投稿がされます。

この投稿に対して、以下のように返信し、[Sign in]ボタンをクリックします。

@Azure Pipelines signin

次に、監視したいリリースパイプラインを設定します。

@azure pipelines subscribe https://dev.azure.com/%organization%/%project%/_release?definitionId=%no%&view=mine&_a=releases

subscriptions to Deployment started, Deployment completed and Deployment approval pending notifications for webapp-deployment. Add or remove subscriptions for this channel with : @Azure Pipelines subscriptions
と表示されたら、設定は正常に完了しています。

実際に試してみる

それでは、実際にプロセスを動かしてみましょう。

まず、ソースコードに直接変更を加えて、それをPushしてみます。

この操作により、最初にビルドパイプラインが起動します。

ビルドパイプラインが完了すると、続いてリリースパイプラインが動き出します。

dev 環境へのデプロイが完了し、現在 staging 環境へのデプロイが待機状態にあることがわかります。

同時に、Microsoft Teamsにも通知が行われました。このTeams上の「Approve」ボタンをクリックしてみます。

すると、staging 環境へのデプロイが開始されます。

うまく動いていますね。お疲れさまでした。

おわりに

この記事を通して、Azure DevOps のリリース承認機能を利用したデプロイ制御の方法を詳しく見てきました。特に、Dev と Staging の異なる環境間でのデプロイ管理において、Pre-deployment approval 機能がいかに効果的かを実例を通して理解していただけたと思います。

実際に Azure DevOps と Microsoft Teams を連携させることで、承認プロセスがよりスムーズになり、チームの作業効率が大幅に向上することを示しました。このような統合は、現代のデプロイメント戦略において不可欠であり、チームのコラボレーションを促進します。

今後も Azure DevOps の機能を活用し、効率的かつ安全なデプロイメントプロセスの構築に役立てていただければ幸いです。もし本記事があなたの開発プロセスに新たな視点をもたらしたなら、嬉しいです。

最後に、読者の皆様に感謝を申し上げます。ご質問やフィードバックがあれば、ぜひコメント欄でお知らせください。

References

https://learn.microsoft.com/ja-jp/azure/devops/pipelines/release/approvals/approvals?view=azure-devops
https://learn.microsoft.com/ja-jp/azure/devops/pipelines/integrations/microsoft-teams?view=azure-devops
https://learn.microsoft.com/ja-jp/azure/devops/pipelines/integrations/slack?view=azure-devops#configuration-failed-please-make-sure-that-the-organization-exists-and-that-you-have-sufficient-permissions

GitHubで編集を提案

Discussion