是否可以在运行时修改构建策略的显示名称?

Is it possible to modify the display name of the build policy at runtime?

在TFS / Azure DevOps中为某个分支配置构建策略时,可以输入Display name,这显然定义了它在评估期间在拉取请求上的显示方式:

我想在运行时修改这个值,最好从 PowerShell 构建步骤开始。

我尝试使用 REST API 更新拉取请求策略状态,但显然,构建策略评估并非源自状态——至少,在列表操作。

好像Evaluations跟那个有点关系,但是我只能看到read那里的操作。

如果能提示是否可以修改显示名称,以及如何修改,我将不胜感激。我的TFS版本是2018,update 2.

首先,目前还不能按照官方文档来实现。

正如您所提到的,Evaluations Rest API 中没有更新方法。

还要检查 Logging commands 检查是否有类似 ##vso[build.updatebuildnumber]build number / ##vso[release.updatereleasename]release name 的内容 更新当前版本的版本号/更新当前版本的版本名称,这也可以更新当前构建期间的策略名称。没有找到那种命令。


但是,我也进行了手动测试,将构建排队等待构建验证策略,该策略在活动拉取请求中命名为 test1test2

在构建 运行 期间,手动 update/change 该策略在 Web 门户中的显示名称从 test1zero。 在浏览器中刷新拉取请求页面后,您将看到

构建完成后,策略的显示名称也会更新。

所以结论:我们可以做到这一点。一些相关的 REST APIs 可能没有记录。对于这些我们可以使用Fiddler等工具或者直接按F12-Chrome中的network进行追踪。希望这有助于或给出正确的方向。

正如我在 中提到的,我最终采用了一种略有不同的方法。为了更好地了解流程中正在执行的步骤,脚本将拉取请求状态发送回拉取请求,每次检查一个。

所以,基本上,每张支票的结构如下:

  • 定义检查的初始状态为succeeded
  • 执行检查,并在不满足检查条件的情况下将状态更新为failed
  • Post 返回拉取请求的状态(来自 PowerShell 的 REST API 调用)

例如,我的案例中的一项检查是 fixup!squash! 提交消息的存在。以下代码表示上述流程:

$fixupStatus = "succeeded"
"fixup!", "squash!" | Foreach-Object {
    $fixups = git log $sourceCommit $targetCommit --grep="$_" --oneline
    if ($fixups.Count -ne 0) {
        Print-Error("'$_' commits detected!:`n    $([system.String]::Join(`"`n    `", $fixups))")
        $fixupStatus = "failed"
        $exitCode += 1
    }
}
Post-PullRequestStatus -name "git-fixup-status" -description "Git Fixup Check" -state $fixupStatus

Post-PullRequestStatus 的代码如下所示:

function Post-PullRequestStatus {
    param (
        [string]$name,
        [string]$description,
        [string]$state,
        [string]$genre = "git-health-check"
    )

    $body = @{
        state       = $state
        description = $description
        context     = @{
            name  = $name
            genre = $genre
        }
    } | ConvertTo-Json

    Send-Request -method "POST" -Body $body | Out-Null
}

最终结果如下所示:

我在 the blog post 中概述了更多细节。