Запустить сборку и передать переменные через VSTS Rest API

Я хотел бы начать сборку Visual Studio Team Service через API REST. Существует API для построения очередей, но я не смог найти способ определения переменных.

5 ответов

Решение

Принятый ответ на самом деле не отвечает на вопрос, когда вам нужно установить значение во время очереди. Решение на самом деле довольно простое, вам просто нужно добавить parameters поле для полезной нагрузки JSON. Содержимое должно быть строкой json (не напрямую объектом), содержащей параметры Ex:

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

РЕДАКТИРОВАТЬ: эта функция теперь правильно задокументирована как an optional stringified dictionary, См. https://www.visualstudio.com/fr-fr/docs/integrate/api/build/builds.

Переменные включены в определения, вы можете обновить определение сборки, чтобы установить переменные сначала через api-определение сборки, а затем поставить очередь в очередь.

Ниже приведен раздел переменных, получаемый через API определения сборки:

  "variables": {
    "system.debug": {
      "value": "false",
      "allowOverride": true
    },
    "BuildConfiguration": {
      "value": "release",
      "allowOverride": true
    },
    "BuildPlatform": {
      "value": "any cpu",
      "allowOverride": true
    }
  },

Для тех, кто ищет это, я смог заставить его работать с 'templateParameters' , которые позволяют вам отправлять Objectвместо Stringна версии 7.1.

  • Метод: POST
  • URL-адрес: https://dev.azure.com/{organization}/{project}/_apis/build/builds?api-version=7.1-preview.7
  • Тело: пример JSON:
            {
      "sourceBranch":"Development",
      "definition": {
        "id": 5
      }
      "templateParameters": {
        "PARAMETER1": "value1",
        "parameter2": "valuex"
      }
    }
    

Документы: https://docs.microsoft.com/en-us/rest/api/azure/devops/build/builds/queue?view=azure-devops-rest-7.1 .

Для тех, у кого есть проблемы с этим (у меня), есть разница в API, используемых с момента принятого ответа (который для меня вообще не работал). Но, следуя совету Cyprien Autexier, я заглянул под капот (Firefox Dev Tools) и заметил, что портал больше не использует Builds API. Он использует конвейер (https://docs.microsoft.com/en-us/rest/api/azure/devops/pipelines/runs/run-pipeline?view=azure-devops-rest-6.1). С этим работал безотказно.

Вроде работает с 5.1. Все, что вам нужно сделать, это определить переменные, которые вы передаете в качестве параметров в переменных конвейера, и убедиться, что установлен флажок «Устанавливается во время очереди». Если у вас есть такая же переменная в какой-либо библиотеке, убедитесь, что вы удалили эти ссылки, поскольку переменные библиотеки переопределяют те, которые установлены через API.

Примечание. Я использую Azure Devops Server 2019.

API: https://learn.microsoft.com/en-us/rest/api/azure/devops/build/builds/queue?view=azure-devops-rest-5.1 .

Переход к установке переменных: отредактируйте конвейер YAML --> нажмите на 3 точки рядом с кнопкой «Выполнить» --> Переменные --> ВКЛАДКА «Переменные».

Надеюсь, это поможет кому-то

Другие вопросы по тегам