是否可以在 TFS\VSTS 中识别部署批准被覆盖的版本?

Posted

技术标签:

【中文标题】是否可以在 TFS\\VSTS 中识别部署批准被覆盖的版本?【英文标题】:Is it possible in TFS\VSTS to identify releases where the deployment approval was overridden?是否可以在 TFS\VSTS 中识别部署批准被覆盖的版本? 【发布时间】:2018-06-04 15:24:36 【问题描述】:

在 TFS / VSTS 中,管理员可以批准发布部署,即使他们没有被指定为批准者。他们可以使用 Override 选项来批准发布。

我正在尝试确定我们是否可以报告此类活动。我预计我们会被要求(例如,由我们的审计/安全人员)确定未经通常批准者批准的版本。

我已使用 Rest API 检查了部署和批准历史记录,并且所有发布都标记为已批准。它似乎无法区分正常批准和使用覆盖的批准。

我们目前使用的是 TFS 2017.1,但我怀疑这个问题也适用于更高版本和 VSTS。

[更新]

这是显示正常审批者视图的标准对话框...

Normal Approval

这是 TFS 管理员(不在审批者组中)获得的...

Override approval

单击覆盖会显示正常对话框,然后批准。这是正常的 TFS 行为,我只想报告何时使用覆盖功能。

【问题讨论】:

对于VSTS和TFS,只有发布定义中指定的用户才能批准发布部署。即使对于管理员,如果他们没有在批准者列表中指定,他们也无法批准部署。 如果您拥有“管理发布权限”权限,您可以批准发布的部署,即使您没有被明确列为批准者。您会在部署批准对话框中获得“覆盖”选项。 Release Administrators 的成员获得此权限,并且可以将其授予其他组或用户。 这不应该发生。为了获取详细信息,您能否在此处显示相关的屏幕截图(发布定义中的批准者列表以及未在批准者列表中指定但可以批准部署的管理员)? 添加了详细信息。 TFS 中允许管理员覆盖部署是正常行为。我只是希望能够在它发生时报告。 我添加了一个答案,用于确定是否覆盖了发布批准,您可以尝试一下。 【参考方案1】:

对于发布批准的覆盖,实际上是另一个用户代表指定批准批准部署

您可以通过多种选项来确定发布批准是否被覆盖。

选项 1:查看发布日志

您可以查看发布日志->点击批准图标->然后您可以找到批准部署的人。

选项 2:通过 REST API 检查

或者你可以使用Get Release REST API:

GET https://account.vsrm.visualstudio.com/Git2/_apis/release/releases/releaseId?api-version=4.1-preview.6

然后你可以在preDeployApprovals下获取详细信息。如果approver 中的用户与approvedBy 中的用户不同,则批准被覆盖。

【讨论】:

我认为 API 提供了处理它的最佳方式。在我们的例子中,approver 将是一个组,approvedBy 将是一个可能在也可能不在该组中的个人。我们可以在部署自动化中包含一个步骤,以检查批准者是否在组中,如果不是,则采取适当的措施。但是,如果数据中存在记录覆盖操作的值,则更容易识别。也许他们会在未来的版本中添加它。 感谢您的帮助。标记为答案。

以上是关于是否可以在 TFS\VSTS 中识别部署批准被覆盖的版本?的主要内容,如果未能解决你的问题,请参考以下文章

阅读在Typescript中编写的任务中的TFS / VSTS Secreat变量

当TFS/VSTS遇上Power BI

ExpressCheckout 能否识别交易是不是被批准?

TFS中构建服务器上的编码UI测试Windows应用程序

如何识别Java字节码中的覆盖方法?

从 tfs 调用服务结构包命令失败