4

以前は 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 でこの通知を送信する (より良い) 方法を知っていますか?
そして、そのようなことに適切なツールを使用していますか?

4

1 に答える 1

0

電子メール アラートは「環境所有者」と「リリース作成者」にのみ送信できます。現在のところ、電子メール アラートの内容をカスタマイズする方法はありません。VSTS User Voiceで機能リクエストを送信できます。

Rest API は、これらの情報を取得するための優れたツールです。しかし、すべてのブランチに同じリリース定義を使用しているとのことでした。これは意味がありません。異なるブランチはプロジェクトの異なるバージョンを参照します。なぜそれらすべてを 1 つのリリース パイプラインにデプロイするのですか? ワークフローをブランチごとに 1 つのリリース定義に構成すると、解決がより簡単になります。以前のリリースのビルド ID を取得して、そのビルド後の変更を取得するだけです。また、powershell タスクを追加して、現在のリリース バージョンの TFVC/Git リポジトリのラベル/タグを作成して、ラベル/タグ間の変更を取得することもできます。

于 2016-06-15T05:24:39.023 に答える