4

我正在使用以前称为 Visual Studio Online (VSO) 的 Visual Studio Team Services (VSTS) 来构建持续交付管道。我的目标是尽可能接近 Jez Humble 和 David Farley 的《持续交付》一书。

我希望当一个阶段(在 VSTS 中名为 Environment)失败时,会向参与此版本的每个开发人员发送通知(一封电子邮件) 。该通知会说:

  • 你打破了舞台(回归)
  • 舞台已经被打破(失败)
  • 你修好了舞台。(固定的)

目前,只有手动创建发布的人(或通过推送触发构建的提交然后发布)才会收到这封电子邮件,而没有我想要的信息。

我已经玩了一点 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 将是开发的。比较这两个版本没有意义。

我知道我可以在发布阶段从环境变量中获取构建 ID,然后使用上面的脚本创建一个 PowerShell 任务或插入 VSTS 的 Web 服务。但它只有在每次构建都触发发布时才有效,但情况并非总是如此。

您知道使用 VSTS 发送此通知的(更好的)方法吗?
我是否为这类事情使用了正确的工具?

4

1 回答 1

0

您只能将电子邮件警报发送给“环境所有者”和“发布创建者”,目前无法自定义电子邮件警报中的内容,您可以在VSTS 用户语音上提交功能请求。

Rest API 是获取这些信息的好工具。但是您提到您对所有分支使用相同的发布定义。这根本不符合逻辑。不同的分支指的是项目的不同版本,为什么要将它们全部部署在一个发布管道中?如果您将工作流程配置为每个分支一个发布定义,则解决问题会更容易。您只需要获取先前版本的构建 ID,然后获取该构建之后的更改。您还可以添加一个 powershell 任务来为当前版本的 TFVC/Git 存储库创建标签/标签,以便您可以获取标签/标签之间的更改。

于 2016-06-15T05:24:39.023 回答