Обновление конвейера выпуска Azure Devops: задачи с версиями «Развернуть платформу 3: 1. *» недопустимы для задания развертывания «Запуск на агенте». - PullRequest
1 голос
/ 22 мая 2019

Я использую 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).Но не могу добавить новое задание.

Это ошибка или я что-то упустил.

1 Ответ

0 голосов
/ 27 мая 2019

Я нашел проблему.
У нового WorkflowTask, который я добавляю, есть поле taskId, которое я пытался сгенерировать. Но это поле taskId соответствует типу лазурного конвейера , который я хочу использовать. В моем случае мне нужно установить приложение-функцию Azure идентификатор задачи, 501dd25d-1785-43e4-b4e5-a5c78ccc0573.

Документация для WorkflowTask не завершена, у нас есть только: TaskId: string

...