Значение не может быть нулевым. Имя параметра: build.Definition - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь поставить в очередь сборку с использованием REST API Azure Devops, но продолжаю сталкиваться с ошибками. Я передаю все обязательные значения, необходимые для API, но все равно получить значение не может быть нулевой ошибкой.

Уже просмотрел документацию, но не смог найти пример кода. Я пытался создать сценарий powershell, используя документацию API, но изо всех сил пытался его запустить.

Param(
   [string]$vstsAccount = "xxxxx",
   [string]$projectName = "yyyyy",
   [string]$definitionId = "1",
   [string]$keepForever = "true",
   [string]$personalAccessToken  = "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz",
   [string]$accountname = "example",
   [String]$adminemail = "example@example.com",
   [String]$adminpassword = "example"
)

# Base64-encodes the Personal Access Token (PAT)
$headers = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($personalAccessToken)")) }

# Construct the REST URL
$uri = "https://dev.azure.com/$vstsAccount/$projectName/_apis/build/builds?api-version=5.0"

Write-Host "Uri :" $uri

$params = 
@"
{
    "definition": $definitionId,
    "description": "Create Release from PowerShell Script",
    "artifacts": [],
    "isDraft": false,
    "reason": "New tenant email Trigger",
    "manualEnvironments": null,
    "environmentsMetadata": null, 
    "properties": null, 
    "variables": {
        "accountname": {
          "value": "$accountname",
          "allowOverride": true
        },
        "adminemail": {
          "value": "$adminemail",
          "allowOverride": true
        },
        "adminpassword": {
          "value": "$adminpassword",
          "allowOverride": true
        }
    }
}
"@

Write-Host "Request Body :" $params

# Invoke the REST call and capture the results
$result = Invoke-RestMethod -Uri $uri -Method POST -Body $params -Headers $headers -ContentType "application/json" -Verbose -Debug

Write-Host "Result :" $result

# This call should only provide a single result
if ($result.count -eq 0)
{
    Write-host "Unable to locate Release Definition Id $definitionId"
}
else
{
    Write-host "Successfully triggered the VSTS release job !!!"
}

Надеюсь получить совет, который выполнит это. Я также передаю 3 переменные в сборку, которые будут использованы в качестве переменных конвейера в конвейере сборки Azure Devops.

1 Ответ

0 голосов
/ 08 октября 2019

Вы должны передать параметры, подобные этому:

    {
    "parameters":  "{\"ReleaseNumber\":  \"1.0.50\", \"AnotherParameter\":  \"a value\"}",
    "definition":  {
                       "id":  2
                   }
    }

Просмотрите этот пост для получения дополнительной информации Запустите сборку и передачу переменных через VSTS Rest API

...