API TFS 2017; Очередь сборки с переменными - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь создать запрос на сборку и указать новые значения для пользовательских переменных, определенных в определении сборки TFS. Я предполагаю, что могу сделать это без обновления определения сборки. Я разместил следующий JSON по URL: http://<server-name>/tfs/DefaultCollection/<project-name>/_apis/build/builds?api-version=3.1. Сборка поставлена ​​в очередь, но переданное значение переменной не переопределяет значение по умолчанию. Чего мне не хватает? Нужно ли указывать имя переменной по-другому?

{
    "definition": {
        "id": 24,
        "variables": {
            "IssueNumber": {
                "value": "98765"
            }
        }
    }
}

1 Ответ

0 голосов
/ 04 мая 2018

Вы предоставляете неправильную структуру JSON. Это parameters, а не variables, и неправильный способ указания пар ключ / значение.

Этот фрагмент PowerShell должен указать вам правильное направление:

$url = 'http://test-tfs-instance:8080/tfs/myCollection'

$body = @{
    definition = @{
        id = 1435
    }
    parameters = '{"MyParam":"OverriddenValue","system.debug":"false"}'
}

Invoke-RestMethod -Uri "$($url)/TeamProject/_apis/build/builds?api-version=3.1" -UseDefaultCredentials -Method Post -ContentType 'application/json' -body ($body | convertto-json -Compress -Depth 10)

Что бы это ни стоило, такого рода вещи легко обнаружить, открыв инструменты разработчика в вашем браузере и посмотрев вызов REST, который делает пользовательский интерфейс TFS. Иногда документация неясна (как в данном случае), но сложно запутаться, когда вы копируете те же самые вызовы REST, которые делает приложение.

...