はじめに
この記事はVisual Studio Team Services Advent Calendar 4日目の記事です。
継続的デプロイメントはリリースする人が責任もって実施する前提ですが、お客さんが別途いる場合や、社内統制的にそうでもない場合があります。
そんな時にReleaseで用意されているリリースゲート機能を使えばリリース手順そのものに手を入れることなく、解決できます。
リリース承認者を設定する
よくあるのがリリースを責任者(スクラムではPOでしょうか)が判定する、というケースです。
各Environmentの左側にあるアイコンをクリックすると、昨日紹介した、リリーストリガーの設定と同じ位置にUIがあります。特定のグループもしくはユーザーアカウントを指定できます。Timeoutは初期値で30日。
- Any order : いずれかの順番
- In sequence : 指定した順番
- Any one user : 何れか一人
1人だけ指定していると、その人が不在の場合長くリリースできなくなるので、複数指定しておきましょう。
承認者にはこのようなメールが届きます。View approvalをクリックすると、承認画面に移動します。
Approval(承認)か、Reject(拒否)します。Artifacts, Work Item, Testsなどを確認してます。
Approve(承認)、Reject(拒否)いずれでも理由を書いてください。そのあとリリースが実行されます。
リリースゲート
リリース時に特定の条件を満たしている場合のみ実行したい、ということはよくあります。今まではリリースタスクで書いていましたが、Sprint 126の新機能(現在プレビューです)でRelease Gateが実装されました。
Gatesをクリックすると、Azure Monitor, Azure Functions, REST API, Work Item Queryが選択できます。今回はAzure Functionを選択します。
今回は例なので、必ず失敗を返すAzure Functionを用意してみます。
FunctionsのUrlとKey、メソッド、Body、ヘッダーを指定します。Azure FunctionsのURLのクエリパラメータのCode=以下の部分を丸ごとKeyのところにコピーしてください。
URLには https://.../api/functionname だけを指定します。
リリースを実行します。
ゲート機能が有効なので、Functionsの事前検証に失敗します。
Logsをクリックすると、FunctionsがBad Requestで失敗したという状態になっています。
デプロイも実行されていません。
まとめ
今まではリリース前に承認可、拒否だけでしたが、リリース対象リソースの状態によってリリースを実行する、ということができるようになりました。
リリースタスクに含めなくていいので大変便利です。有効に使ってください。