以前は Visual Studio Online (VSO) として知られていた Visual Studio Team Services (VSTS) を使用して、継続的デリバリー パイプラインを構築しています。私の目標は、Jez Humble と David Farley による継続的デリバリーの本にできるだけ近づけることです。
ステージ (VSTS では環境という名前) が失敗した場合、このリリースに関与するすべての開発者に通知 (電子メール) が送信されることを望みます。この通知には、次のいずれかが表示されます。
- あなたはステージを破った (回帰)
- ステージはすでに壊れていた (Failed)
- ステージを修正しました。(修理済み)
現在、リリースを手動で作成した人 (または、ビルドをトリガーし、その後リリースをトリガーしたコミットをプッシュした人) だけが、必要な情報なしでこのメールを受け取ります。
私はVSTS APIで少し遊んで、特定のビルドに関連するコミット(および開発者の電子メール)を取得できます(ただし、特定のリリースではありません):
$token = "vsts token"
$endpoint = "https://acme.visualstudio.com/DefaultCollection/MyProject/_apis/build/builds/42/changes?api-version=2.0"
$b64creds = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$($token):a"))
$changes = Invoke-RestMethod -Headers @{Authorization="Basic $b64creds"} $endpoint
$changes.value | ForEach-Object { $_.author.uniqueName }
VSTS インターフェースで、2 つのリリースの間に追加されたコミットを確認できることがわかりました。APIでこの情報が見つからなかったとしても、私が望むものに非常に近い. しかし、この情報があっても、私のプロジェクトのすべてのブランチに同じリリース定義が使用されているため、たとえば、Release-26 は機能ブランチになり、Release-27 は開発されます。これら 2 つのリリースを比較しても意味がありません。
環境変数からリリース段階でビルド ID を取得できることはわかっています。その後、上記のスクリプトを使用して、VSTS にプラグインされた PowerShell タスクまたは Web サービスを作成します。ただし、ビルドごとにリリースがトリガーされる場合にのみ機能しますが、これは常にそうとは限りません。
VSTS でこの通知を送信する (より良い) 方法を知っていますか?
そして、そのようなことに適切なツールを使用していますか?