是否可以在运行时修改构建策略的显示名称?
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
的内容 更新当前版本的版本号/更新当前版本的版本名称,这也可以更新当前构建期间的策略名称。没有找到那种命令。
但是,我也进行了手动测试,将构建排队等待构建验证策略,该策略在活动拉取请求中命名为 test1
和 test2
。
在构建 运行 期间,手动 update/change 该策略在 Web 门户中的显示名称从 test1
到 zero
。
在浏览器中刷新拉取请求页面后,您将看到
构建完成后,策略的显示名称也会更新。
所以结论:我们可以做到这一点。一些相关的 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 中概述了更多细节。
在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
的内容 更新当前版本的版本号/更新当前版本的版本名称,这也可以更新当前构建期间的策略名称。没有找到那种命令。
但是,我也进行了手动测试,将构建排队等待构建验证策略,该策略在活动拉取请求中命名为 test1
和 test2
。
在构建 运行 期间,手动 update/change 该策略在 Web 门户中的显示名称从 test1
到 zero
。
在浏览器中刷新拉取请求页面后,您将看到
构建完成后,策略的显示名称也会更新。
所以结论:我们可以做到这一点。一些相关的 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 中概述了更多细节。