Azure DevOps 管道未显示所有运行

Azure DevOps Pipeline Not Displaying All Runs

我在尝试显示我的一个管道的所有 运行 时遇到问题。我正在 运行 内部部署 Azure Devops 2020,我得到一个永久旋转的加载对话框。我的任何其他管道中都没有这个问题。似乎如果我在有问题的管道中按 运行 状态进行过滤,我就能够通过它并查看一些 运行s 但对于我的情况下的其他状态“成功”和“成功但有问题” “我继续得到旋转加载符号。有什么建议吗?

这里有一些建议:

建议1

清理缓存或从不同的浏览器加载页面并重新启动 Azure DevOps 服务器和 SQL 服务器计算机。

建议2

创建一个与受影响的管道具有相同设置的新管道。

建议3

您可以使用 REST API Builds - List 获取管道的所有运行。

GET https://dev.azure.com/{organization}/{project}/_apis/build/builds?api-version=6.0

因为这个问题的原因可能是运行列表太长了。你可以用REST API Builds-Delete 删除一些你不需要的run,看看问题能不能解决。

DELETE https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}?api-version=6.0

建议4

您可以参考开发者社区上的similar question。 Jan Selbach 的评论提供了一个解决方案。

1.Run the following SQL script to find the LeaseId of duplicate rows. Please change collection Db name according to your’s.

SELECT LeaseId
FROM [AzureDevOps_DefaultCollection].[Build].[tbl_RetentionLease] 
 WHERE
partitionId > 0 AND
LeaseId NOT IN (
SELECT MIN(LeaseId) as LeaseId
  FROM [AzureDevOps_DefaultCollection].[Build].[tbl_RetentionLease]
    WHERE PartitionId > 0
    GROUP BY OwnerId,RunId
)

2.Concatenate the LeaseIds into a comma separated list

3.Run the following PowerShell script by filling in the org, project, pat, and leaseId by passing in the comma separated list of LeaseIds (remember if on-prem change the https://dev.azure.com in the $uri to your on-prem server)

$org = "";
$project = "";
$pat = "";
$encoded = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes([string]::Format("{0}:{1}", "", $pat)));
$accessToken = "Basic $encoded";
$leaseId = "";
$uri = "https://dev.azure.com/$org/$project/_apis/build/retention/leases?ids=$leaseId&api-version=6.0-preview";
try {
$response = Invoke-RestMethod -uri $uri -method DELETE -Headers @{ Authorization = $accessToken } -ContentType "application/json"
$response
}
catch {
$errorDetails = ConvertFrom-Json $_.ErrorDetails
Write-Host "StatusCode: $($_.Exception.Response.StatusCode)`nExceptionType: $($errorDetails.typeKey)`nExceptionMessage: $($errorDetails.message)"
#StackTrace: $($errorDetails.stackTrace)" 
}