Установка переменной конвейера выпуска Azure DevOps с помощью REST API
Мы могли бы использовать REST API Definitions - Get, чтобы получить всю информацию об этом определении в теле, затем мы могли бы обновить тело и использовать (Definitions - Update), чтобы обновить значение переменной определения выпуска. из выпускного конвейера:
PUT https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/definitions/{definitionId}?api-version=5.0
Ниже приведены мои тестовые встроенные скрипты PowerShell:
$url = "https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/definitions/{definitionId}?api-version=5.1"
Write-Host "URL: $url"
$pipeline = Invoke-RestMethod -Uri $url -Method Get -Headers @{
Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
Write-Host "Pipeline = $($pipeline | ConvertTo-Json -Depth 100)"
# Update an existing variable named TestVar to its new value 2
$pipeline.variables.TestVar.value = "789"
####****************** update the modified object **************************
$json = @($pipeline) | ConvertTo-Json -Depth 99
$updatedef = Invoke-RestMethod -Uri $url -Method Put -Body $json -ContentType "application/json" -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"}
write-host "=========================================================="
Write-host "The value of Varialbe 'TestVar' is updated to" $updatedef.variables.TestVar.value
В результате теста переменная TestVar
обновилась до 789
:
![введите описание изображения здесь](https://i.stack.imgur.com/SDrJq.png)
Обновление:
Но я хочу добиться этого без обновления \ изменения определения
Ответ положительный. Вы можете использовать Релизы - Создать с телом запроса:
{
"definitionId": Id,
"environments": [
{
"variables": {
"TestVar": {
"value": "xxxx"
},
"TestVar2": {
"value": "xxxx"
}
},
}
],
}
Для получения дополнительной информации см. сообщение здесь .
Надеюсь это поможет.
person
Leo Liu-MSFT
schedule
10.12.2019