Azure devops 有没有一种方法可以无限期地保持pullrequests的管道运行?

Azure devops 有没有一种方法可以无限期地保持pullrequests的管道运行?,azure-devops,Azure Devops,我们的项目处于监管区域,我们需要证明PR测试结果已成功运行,即使在1,2年后进行审计。因此,我们需要保留PR管道构建,而不是将其删除 我已经使用受保护的保留策略存储了与主分支相关的管道构建。 我已经设法存储了与发布相关的管道构建 我找不到如何将PR管道存储超过30天: 我唯一的想法是手动在构建中选择“保留” 有什么线索吗?您可以使用rest api d。PowerShell示例保留一个生成定义的所有生成: $user = "" $token = "<pat&

我们的项目处于监管区域,我们需要证明PR测试结果已成功运行,即使在1,2年后进行审计。因此,我们需要保留PR管道构建,而不是将其删除

我已经使用受保护的保留策略存储了与主分支相关的管道构建。 我已经设法存储了与发布相关的管道构建

我找不到如何将PR管道存储超过30天:

我唯一的想法是手动在构建中选择“保留”

有什么线索吗?

您可以使用rest api d。PowerShell示例保留一个生成定义的所有生成:

$user = ""
$token = "<pat>" #https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops&tabs=preview-page

$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))

$org = "<org_name>"
$teamProject = "<team_project_name>"
$buildDefId = "<build_definition_id>"

$restApiGetBuilds = "https://dev.azure.com/$org/$teamProject/_apis/build/builds?definitions=$buildDefId&api-version=6.0"
$restApiPatchBuildTemplate = "https://dev.azure.com/$org/$teamProject/_apis/build/builds/{buildId}?api-version=6.0"

function InvokeGetRequest ($GetUrl)
{   
    return Invoke-RestMethod -Uri $GetUrl -Method Get -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
}

function InvokePatchRequest ($GetUrl, $body)
{   
    return Invoke-RestMethod -Uri $GetUrl -Method Patch -ContentType "application/json" -Body $body -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
}


$builds = InvokeGetRequest $restApiGetBuilds

foreach($build in $builds.value)
{
    $restApiPatchBuild = $restApiPatchBuildTemplate -replace "{buildId}", $build.id

    InvokePatchRequest $restApiPatchBuild '{"keepForever":true}'
}
$user=“”
$token=“”#https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops&tabs=预览页面
$base64AuthInfo=[Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes((“{0}:{1}”-f$user,$token)))
$org=“”
$teamProject=“”
$buildDefId=“”
$restApiGetBuilds=”https://dev.azure.com/$org/$teamProject/_api/build/builds?定义=$buildDefId&api版本=6.0“
$restApiPatchBuildTemplate=”https://dev.azure.com/$org/$teamProject/_api/build/builds/{buildId}?api版本=6.0“
函数InvokeGetRequest($GetUrl)
{   
return Invoke RestMethod-Uri$GetUrl-Method Get-ContentType“application/json”-Headers@{Authorization=(“基本{0}”-f$base64AuthInfo)}
}
函数InvokePatchRequest($GetUrl,$body)
{   
return Invoke RestMethod-Uri$GetUrl-Method Patch-ContentType“application/json”-Body$Body-Headers@{Authorization=(“基本{0}”-f$base64AuthInfo)}
}
$builds=InvokeGetRequest$restApiGetBuilds
foreach($buildin$builds.value)
{
$restApiPatchBuild=$restApiPatchBuildTemplate-替换“{buildId}”,$build.id
InvokePatchRequest$restApiPatchBuild'{“keepForever”:true}
}

非常感谢!我本希望AZD能够以某种方式支持此功能,但您发送的是一个惊人的黑客!如果没有人在短时间内添加任何内容,我会将此标记为一个答案。再次感谢你!嗨@czioutas,如果这个答案有帮助,你能接受它作为答案吗?因此,它可以帮助其他社区成员谁得到同样的问题,我们可以存档此线程。谢谢祝你今天愉快。:)@维托利MSFT我没有时间测试它,但我现在将它标记为已被接受,因为我相信它的基础已经存在并且应该有效。