Я использую API Azure DevOps Services REST 5.0 для обновления конвейерной версии.
У меня есть выпуск с этапом DEV, в котором в задании «Запуск агента» есть две задачи:
- Развертывание платформ 1
- Развертывание платформ 2
Я хочу добавить новую задачу «Развернуть платформу 3», используя метод обновления из API-интерфейса REST Azure DevOps Services.
Но когда я пытаюсь выполнить ОБНОВЛЕНИЕ, возникает ошибка:
Задачи с версиями «Развернуть Платформа 3: 1. *» недопустимы для задания развертывания «Запуск на агенте» на этапе DEV.
I get определение выпуска по URL: https://vsrm.dev.azure.com/organizationname/projectname/_apis/release/definitions/5?api-version=5.0
Я добавляю новую задачу в объект environments[0].deployPhases[0].workflowTasks
.
Workflowtasks
объект с моей новой задачей:
"workflowTasks": [
{
"environment": {},
"taskId": "501dd25d-1785-43e4-b4e5-a5c78ccc0573",
"version": "1.*",
"name": "Deploy Plataform 1",
"refName": "",
"enabled": true,
"alwaysRun": false,
"continueOnError": false,
"timeoutInMinutes": 0,
"definitionType": null,
"overrideInputs": {},
"condition": "succeeded()",
"inputs": {
"azureSubscription": "3ca9b800-e82b-4678-8483-xxxxx",
"appType": "$(Parameters.AppType)",
"appName": "app func name 1",
"deployToSlotOrASE": "false",
"resourceGroupName": "",
"slotName": "production",
"package": "$(System.DefaultWorkingDirectory)/**/*.zip",
"runtimeStack": "",
"startUpCommand": "",
"customWebConfig": "",
"appSettings": "",
"configurationStrings": "",
"deploymentMethod": "auto"
}
},
{ ...
},
{
"environment": {},
"taskId": "502dd25d-1785-43e4-b4e5-a5c78ccc0573",
"version": "1.*",
"name": "Deploy Plataform 3",
"refName": "",
"enabled": true,
"alwaysRun": false,
"continueOnError": false,
"timeoutInMinutes": 0,
"definitionType": "task",
"overrideInputs": {},
"condition": "succeeded()",
"inputs": {
"azureSubscription": "3ca9b844-e92b-4678-8483-xxxx",
"appType": "functionApp",
"appName": "func app name",
"deployToSlotOrASE": "false",
"resourceGroupName": "",
"slotName": "production",
"package": "$(System.DefaultWorkingDirectory)/**/*.zip",
"runtimeStack": "",
"startUpCommand": "",
"customWebConfig": "",
"appSettings": "",
"configurationStrings": "",
"deploymentMethod": "auto"
}
}
]
PUT url: https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/definitions?api-version=5.0
Ошибка:
Invoke-RestMethod : {"$id":"1","innerException":null,"message":"Tasks with versions 'Deploy Plataform 3:1.*' are not valid for deploy job 'Run on agent' in stage DEV.
","typeName":"Microsoft.VisualStudio.Services.ReleaseManagement.Data.Exceptions.InvalidRequestException, Microsoft.VisualStudio.Services.ReleaseManagement2.Data","typeKey":"InvalidRequestException","errorCode":0,"eventId":3000}
Au caractère C:\Projects\TransportConfiguration\AutomationTasks\Build Definitions Supporting Scripts\Update-Release-Stage.ps1:49 : 9
+ Invoke-RestMethod -Uri $uri -Headers ($Header) -Method PUT -B ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
Метод Put:
function Invoke-WebRequestPut ([PSCustomObject] $releaseDefinition) {
$uri = "https://vsrm.dev.azure.com/organizationname/projectname/_apis/release/definitions?api-version=5.0"
$Auth = '{0}:{1}' -f $UserName, $PersonalToken
$Auth = [System.Text.Encoding]::UTF8.GetBytes($Auth)
$Auth = [System.Convert]::ToBase64String($Auth)
$Header = @{Authorization = ("Basic {0}" -f $Auth)}
$body = $releaseDefinition | ConvertTo-Json -Depth 30
$body2 = [System.Text.Encoding]::UTF8.GetBytes($body)
Invoke-RestMethod -Uri $uri -Headers ($Header) -Method PUT -Body $body2 -ContentType "application/json"
}
Используя этот метод Put, я могу успешно изменить имя существующей задачи (Deploy Plataform 1 => Deploy Plataform X).Но не могу добавить новое задание.
Это ошибка или я что-то упустил.