抛出警告时更改 Azure DevOps 管道构建状态
Change Azure DevOps pipeline build status when warnings are thrown
我们有一个 Azure DevOps 管道,它使用自托管 Windows 代理和 Azure DevOps 服务器 2019。该管道运行我们的前端测试没有任何问题。然而,有时我们的 linting 步骤会发现它作为警告抛出的问题(例如未使用的变量)。这是我们希望它做的,但问题是这些警告没有被提升。因此,查看它们的唯一方法是查看构建执行。
我们可以通过向 linting 命令添加 vso 格式化程序来解决这个问题:npm run nx run-many -- --target="lint" --all --skip-nx-cache=true --parallel --format=vso
。所以现在警告是这样抛出的:
如绿色框所示,警告显示正确。然而,在红色圆圈中,构建、作业和 linting 任务的状态是成功的。有没有一种方法可以将此构建、作业和任务标记为警告,以便我们知道要进一步查看?感谢您的帮助,如果我可以提供更多信息,请告诉我。
你可以在管道的末尾添加一个powershell任务,然后运行 Rest API(Timeline - Get) to traverse the warning messages in the previous task. Finally, you can use the logging command设置管道状态
这是 PowerShell 示例:
$token = "PAT"
$url="GET https://{instance}/{collection}/{project}/_apis/build/builds/$(build.buildid)/timeline?api-version=5.0"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$count = 0
$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json
ForEach( $issues in $response.records.issues )
{
if($issues.type -eq "warning")
{
echo $issues.Message
$count ++
}
}
echo $count
if($count -ne 0 )
{
Write-Host "##vso[task.complete result=SucceededWithIssues;]"
}
结果:
Microsoft "Build Quality Checks" 创建了 Azure DevOps Extension/Task
所以你可以用它来设置一个额外的选项来强制特定的构建质量。
我们有一个 Azure DevOps 管道,它使用自托管 Windows 代理和 Azure DevOps 服务器 2019。该管道运行我们的前端测试没有任何问题。然而,有时我们的 linting 步骤会发现它作为警告抛出的问题(例如未使用的变量)。这是我们希望它做的,但问题是这些警告没有被提升。因此,查看它们的唯一方法是查看构建执行。
我们可以通过向 linting 命令添加 vso 格式化程序来解决这个问题:npm run nx run-many -- --target="lint" --all --skip-nx-cache=true --parallel --format=vso
。所以现在警告是这样抛出的:
如绿色框所示,警告显示正确。然而,在红色圆圈中,构建、作业和 linting 任务的状态是成功的。有没有一种方法可以将此构建、作业和任务标记为警告,以便我们知道要进一步查看?感谢您的帮助,如果我可以提供更多信息,请告诉我。
你可以在管道的末尾添加一个powershell任务,然后运行 Rest API(Timeline - Get) to traverse the warning messages in the previous task. Finally, you can use the logging command设置管道状态
这是 PowerShell 示例:
$token = "PAT"
$url="GET https://{instance}/{collection}/{project}/_apis/build/builds/$(build.buildid)/timeline?api-version=5.0"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$count = 0
$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json
ForEach( $issues in $response.records.issues )
{
if($issues.type -eq "warning")
{
echo $issues.Message
$count ++
}
}
echo $count
if($count -ne 0 )
{
Write-Host "##vso[task.complete result=SucceededWithIssues;]"
}
结果:
Microsoft "Build Quality Checks" 创建了 Azure DevOps Extension/Task
所以你可以用它来设置一个额外的选项来强制特定的构建质量。