0

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

4

1 回答 1

1

以下是一些建议:

建议一

清理缓存或从其他浏览器加载页面,然后重新启动 Azure DevOps Server 和 SQL Server 计算机。

建议二

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

建议 3

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

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

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

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

建议 4

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

1.运行以下SQL脚本查找重复行的LeaseId。请根据您的更改集合数据库名称。

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.将 LeaseIds 连接成一个逗号分隔的列表

3.通过传入逗号分隔的 LeaseIds 列表来填写 org、project、pat 和 leaseId 来运行以下 PowerShell 脚本(请记住,如果在本地将 $uri 中的https://dev.azure.com更改为您的本地服务器)

$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)" 
}
于 2020-12-07T03:06:19.057 回答