※本記事は2019年1月現在の情報です
はじめに
本記事では、Azure Pipelinesのリリースゲートという機能を紹介します。VSTS時代から存在していた機能ですが、この機能について紹介している記事があまりなかったため、作成することにしました。
リリースゲートの目的
リリースゲート(release gate)は、サービスをリリースする際の条件(もしくはリリース後の条件)を、外部ツールが返した値を元に設定できる機能です。Azure Pipelinesでは、Build終了後のReleaseプロセスで、リリースゲートを設定をすることが出来ます。リリースゲートを用いることで、インシデント管理や品質評価等をアプリケーションのリリース前・後に自動的に行うことが出来ます。
※本記事では、リリース前にゲートを設置するという文脈で綴ります。
ゲートの種類
デフォルトで用意されている主に利用可能なゲートは以下4つです。
・Invoke Azure Function
-> リリース前にAzure Functionに書かれたコードを実行し、設定した結果が返ってきたらリリースを実行する。
・Query Azure Monitor alerts
-> Azure Monitorで設定したアラートルールの結果を元にリリースを実行する。
・Invoke REST API
-> REST APIをコールし、成功レスポンスが返ってきたらリリースを実行する。
・Query Work Items
-> Azure Boardsに登録されたwork itemsにクエリをかけた結果を元に、設定した値が返ってきたらリリースを実行する。
本記事では、Query Work Itemsを例に紹介をします。
リリースゲートの設定方法
ここでは、Work Itemsに登録されているバグが0でない限りリリースをしないという設定をゲートを用いて行いたいと思います。
1.ビルドが終了したところから始めます。ビルドが正常に終了したら画面右上の「Release」ボタンをクリックしてください。
2.以下の手順でクリックしていくと、ゲートを設定するところにいきます。
3.クエリはAzure BoardsのQueriesのShared Queriesに保存されているものの中から選択することが出来ます。ここでは、Critical Bugsクエリを選択します。
4.Upper thresholdでは、クエリの結果として返ってきた値の閾値の最大値を決めることができます。今回の例だと、Critical BugsがOO個以下だったらリリースさせるという設定を決めていることになります。ここでは、Work Itemsに登録されているバグが0個でなければ、リリースさせないという設定にしましょう。
(ゲートを評価する時間間隔も決めることができます。ここでは5分としています。)
5.全ての設定が終わったら、画面右上のSaveボタンをクリックして設定内容を保存しましょう。
実行・結果
1.「Create a release」ボタンをクリックし、「Create」をクリックすると手動でのデプロイを開始することが出来ます。
(今回はAzure Web Appへのデプロイを設定しています。設定方法についてはこの記事では割愛します。)
2.Critical Bugsのクエリを実行すると、1つbugが残っています。
3.そのため、リリースのプロセスが止まっていることが分かります。
さいごに
本記事ではQuery Work Itemsの結果をリリースの条件として設定する手順を紹介しました。VSTSから存在していた機能なので、あまり新鮮味を感じない方もいるかと思いますが、Azure Pipelinesとして提供されてから紹介されている方がいらっしゃらなかったので、今回このような形でまとめをしました。Azure Pipelinesのリリースゲート機能には今回紹介した以外のもの(FunctionsやREST APIなど)もありますので、リリース条件を決めて自動で評価をしたい際には非常に便利な機能かと思います。
※間違っている点、補足コメント等あったら是非お願いします。自習ノートとしてまとめているものですので・・