#azure-devops
#azure-devops
Вопрос:
Наш проект находится в регулируемой области, и нам нужно показать, что результаты PR-тестирования были успешно проверены в случае аудитов даже 1,2 года спустя. Поэтому нам нужно, чтобы сборки PR-конвейера сохранялись и не удалялись.
Мне удалось сохранить сборку конвейера, связанную с основной веткой, используя защищенную политику хранения. Мне удалось сохранить сборку конвейера, связанную с выпуском.
Я не могу найти, как хранить PR-конвейеры дольше, чем на 30 дней:
Моя единственная идея — вручную перейти и выбрать «Сохранить» в сборках.
Есть какие-либо подсказки?
Ответ №1:
Вы можете использовать обновление rest API для сборки. Пример PowerShell для сохранения всех сборок из одного определения сборки:
$user = ""
$token = "<pat>" #https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devopsamp;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=$buildDefIdamp;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}'
}
Комментарии:
1. большое спасибо! Я бы надеялся, что AZD каким-то образом поддержит эту функциональность, но то, что вы прислали, — потрясающий хак! если никто ничего не добавит за короткое время, я отмечу это как ответ. Еще раз спасибо!
2. Привет @czioutas, если этот ответ полезен, не могли бы вы принять его в качестве ответа? Таким образом, это может помочь другим членам сообщества, у которых возникают те же проблемы, и мы могли бы заархивировать этот поток. Спасибо. Хорошего вам дня. 🙂
3. @VitoLiu-MSFT У меня не было времени протестировать его, но я пометил его сейчас как принятый, потому что я считаю, что основа есть и должна работать.