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)"
}
我在尝试显示我的一个管道的所有 运行 时遇到问题。我正在 运行 内部部署 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)"
}