Ошибка при попытке создать определение выпуска с помощью Azure DevOps Rest API

Я использую приведенный ниже сценарий для создания определения выпуска в Azure DveOps с помощью сценария PowerShell, но он не работает с сообщением об ошибке, как показано ниже. Не уверен, где я даю неверные данные.

Invoke-RestMethod: {$ id: 1, innerException: null, message: VS402903: указанное значение не может быть преобразовано в тип ReleaseDefinition. Убедитесь, что его можно преобразовать в тип ReleaseDefinition, и повторите попытку.

Фрагмент кода:

Param( 
[string]$organisation = "ORGNAME", 
[string]$project = "PROJECTNAME", 
[string]$keepForever = "true", 
[string]$user = "userid", 
[string]$token = "tokenID" ) 

$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
Write-host $base64AuthInfo

$postresults = "https://vsrm.dev.azure.com/$organisation/$project/_apis/release/definitions?api-version=6.0"
Write-host $postresults

 $body = 
@"
{  "name": "New release pipeline ",
     "comment": "test",
    "definitionId": 860,
    "description": "Create Release from PowerShell",
    "artifacts": [],
    "isDraft": false,
    "reason": "Demo purpose",
    "manualEnvironments": null,
    "environmentsMetadata": null, 
    "properties": null, 
    "variables": null
    "environments": [
    {
      "name": "PROD",
      "preDeployApprovals": {
        "approvals": [
          {
            "rank": 1,
            "isAutomated": false,
            "isNotificationOn": false,
            "approver": {
              "displayName": null,
              "id": ""
            },
            "id": 0
          }
        ]
      },
      "postDeployApprovals": {
        "approvals": [
          {
            "rank": 1,
            "isAutomated": true,
            "isNotificationOn": false,
            "id": 0
          }
        ]
      },
      "deployPhases": [
        {
          "deploymentInput": {
            "parallelExecution": {
              "parallelExecutionType": "none"
            },
            "skipArtifactsDownload": false,
            "artifactsDownloadInput": {},
            "queueId": 391,
            "demands": [],
            "enableAccessToken": false,
            "timeoutInMinutes": 0,
            "jobCancelTimeoutInMinutes": 1,
            "condition": "succeeded()",
            "overrideInputs": {}
          },
          "rank": 1,
          "phaseType": "agentBasedDeployment",
          "name": "Run on agent",
          "workflowTasks": []
        }
      ],
      "retentionPolicy": {
        "daysToKeep": 30,
        "releasesToKeep": 3,
        "retainBuild": true
      }
    }
  ],
  "path": "\\",
  "releaseNameFormat": "Release",
  "description": ""
} 
"@ | ConvertTo-Json -Depth 100

$result = Invoke-RestMethod -Uri $postresults -Method Post -Body $body -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}

if ($result.count -eq 0)
{
     throw "Unable to locate Release Definition Id $($definitionId)"
}
else
{
    Write-host "Success!!!"
}

См. также:  Почему мой контроллер MVC возвращает неформатированный и заключенный в кавычки JSON?
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. Padmapriya Kp

    У вас есть несколько проблем с телом json:

    1. description существуют дважды.

    2. Вы пропустили , рядом с "variables": null.

    3. Вам необходимо указать действительный id в preDeployApprovals:

          "approver": {
        "displayName": null,
        "id": "PUT-HERE-ID"
      },
      
    4. Добавьте приведенный выше раздел также в

    5. Вам не нужно снова конвертировать его в json, удалите | ConvertTo-Json -Depth 100 из кода.

    Спасибо Shayki, я внес изменения, теперь получаю эту ошибку. Invoke-RestMethod: {$ id: 1, innerException: null, сообщение: не найден пул агентов с идентификатором 391., typeName: Microsoft.TeamFoundation.DistributedTask.WebApi.TaskAgentQueueNotFoundException, Microsoft.TeamFoundation.DistributedTask.WebApi, typeKueception: TaskAoundCueception : 0, eventId: 3000} person Padmapriya Kp; 24.05.2021

    Измените queueId с 391 на действительное число. вы можете перейти сюда https://dev.azure.com/{org-name}/_settings/agentpools, ввести пул и увидеть идентификатор в URL-адресе. person Padmapriya Kp; 24.05.2021

    не могли бы вы предложить мне ответ на запрос в приведенной ниже ссылке? stackoverflow.com/q/67670649/13450322 person Padmapriya Kp; 24.05.2021

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: