Как отмечалось в другом ответе, первоклассного способа сделать это не существует, но я могу предложить способ сделать это с помощью Rest API и PowerShell. Он включает в себя условный набор для задания без агента с шагом ручного вмешательства.
Таким образом, переменные деблокирования не могут проходить через задания агента или Этапы , но вы можете обновить переменную деблокирования, путем обновления экземпляра самой версии с помощью вызова API Rest. Затем вы можете использовать эту переменную в последующих заданиях или этапах.
В работе, в которой вы получаете выходные данные плана Terraform, при условии, что вы захватываете, когда есть операция Add, Change или Destroy, вы можете затем выполнить маршал вернитесь обратно в релиз и используйте его дальше по линии.
Так что пример заимствован из этого поста Stefan Stranger . Смотрите также этот пост Донаван Браун .
Предполагается, что приведенный ниже сценарий powerShell выполняется на первом этапе агента и имеет доступ к результатам вашего плана. Я предопределил переменную в определении выпуска с именем TerraformPlanResult
.
$releaseurl = ('{0}{1}/_apis/release/releases/{2}?api-version=5.0' -f $($env:SYSTEM_TEAMFOUNDATIONSERVERURI), $($env:SYSTEM_TEAMPROJECTID), $($env:RELEASE_RELEASEID) )
Write-Host "URL: $releaseurl"
$Release = Invoke-RestMethod -Uri $releaseurl -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"}
#update the predefined $TerraformPlanResult variable
$Release.variables.TerraformPlanResult.value = $YourPlanResult
Write-Output ('Updating Release Definition Instance')
$json = @($Release) | ConvertTo-Json -Depth 99
Invoke-RestMethod -Uri $releaseurl -Method Put -Body $json -ContentType "application/json" -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" }
Теперь, когда переменная $TerraformPlanResult
доступна на уровне выпуска, вы определяете задание без агента с этим условным условием.
and(succeeded(), in(variables['TerraformPlanResult'], 'Add', 'Change','Destroy'))
Теперь шаг ручного вмешательства будет выполняться только при соблюдении условия.
Несколько других замечаний: