Но мне не удалось получить идентификатор сборки, который требуется в качестве pipeId для загрузки конкретной версии.
Мы могли бы использовать REST API дляполучить идентификатор сборки конвейера, прежде чем мы используем задачу DownloadPipelineArtifact
. Добавьте параметр definitions
, чтобы получить идентификатор сборки для указанных определений:
https://dev.azure.com/{organization}/{project}/_apis/build/builds?definitions={definitions}&api-version=5.1
Затем я получил все идентификаторы сборки, используйте Select-Object -first 1
, чтобы получить последний идентификатор сборки и установить его в качестве переменной среды, поэтому мойЗадача powershell должна выглядеть следующим образом:
$url = "https://dev.azure.com/{organization}/{project}/_apis/build/builds?definitions={definitions}&api-version=5.1"
$buildPipeline= Invoke-RestMethod -Uri $url -Headers @{
Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
} -Method Get
$LatestBuildID= $buildPipeline.value.id | Select-Object -first 1
Write-Host This is Latest Build ID: $LatestBuildID
Write-Host "##vso[task.setvariable variable=LatestBuildID;]$LatestBuildID"
Далее мы устанавливаем переменную $ (LatestBuildID) в параметре сборки:
Теперь мы можем получить последний идентификатор сборки, который требуется как pipeId для загрузки определенной версии.
Как мне добиться, чтобы у каждой работы был один и тот же артефакт, даже если во времязапуск конвейера?
Для этой проблемы нам нужно установить Build completion
для сборки или триггер непрерывного развертывания для выпуска, чтобы был создан новый артефакт, должен выполняться конвейер DownloadPipelineArtifact
.
Надеюсь, это поможет.