Как предоставить параметры конвейера при создании определения сборки с помощью Azure DevOps REST API? - PullRequest
0 голосов
/ 23 января 2020

Я могу создать определение сборки, используя Azure DevOps REST API. Когда я запускал определение сборки с портала, он не использовал файл azure-pipeline.yml, который является частью кодовой базы в Azure Repos. Файл конвейера (azure-pipeline.yml) включает в себя задачу docker, которая создаст образ для приложения. Но эта операция не работает. Чтобы разобраться с этой проблемой, я создал два определения.

  1. Создание определения сборки вручную из Azure DevOps Portal.
  2. Создание определения сборки с использованием Azure DevOps REST API .

Первый подход работает как ожидалось. Он создает образ docker для приложения, и задачи docker работают. Второй подход не сработал, и он просто извлекал исходный код из хранилища.

Я наткнулся на параметры процесса, которые включают путь к файлу конвейера. Я не знаю, как настроить то же самое с помощью REST API.

Я следую этой документации https://docs.microsoft.com/en-us/rest/api/azure/devops/build/definitions/create?view=azure-devops-rest-5.1

РЕДАКТИРОВАТЬ 1

{
"name": "myapp2",
"badgeEnabled": "true",
"queue": {
    "name": "Hosted Ubuntu 1604",
    "pool": {
        "name": "Hosted Ubuntu 1604",
        "isHosted": true
    }
},
"jobAuthorizationScope": "projectCollection",
"jobTimeoutInMinutes": 60,
"jobCancelTimeoutInMinutes": 5,
"quality": "definition",
"type" : "build",
"process": {
    "type": 2
},
"processParameters" : {
    "inputs" : [{
        "name" : "azure-pipeline.yml",
        "required" : true
    }]
}

Остальная часть конфигурации относится к repositories.

Создание определения сборки на портале

enter image description here

Создание определения сборки с использованием Azure DevOps REST API

enter image description here

1 Ответ

0 голосов
/ 24 января 2020

Пост выше, если у вас уже есть конвейер yaml azure -pipeline.yml. Нет необходимости вызывать API-интерфейс Create Definition для создания того же самого файла с azure -pipeline.yml в качестве параметра. Вы можете вызвать, затем поставить в очередь конвейер yaml вручную или через API очереди сборки

Если вы хотите использовать API для создания определения, вы можете сначала использовать Получить определение API для вызовите существующее определение конвейера сборки, чтобы вы могли обратиться к возвращенному ответу, чтобы проверить, какие свойства необходимо настроить для Создать определение api.

Вот пример для Создание определений сборки VSTS с помощью PowerShell . Помимо этого блога, вы можете определить конвейерные задачи (определенные в process:{phases:[{steps:}]}), обратившись к ответу API Get Definition.

Как видите, определить конвейер сборки с использованием API сложно, и это не предлагается, как обсуждалось в этого потока . Наиболее удобный способ создания конвейера - это GUI вручную или с помощью yaml.

Обновление:

Если вы вызываете API Get Definition, чтобы получить определение формата json существующего конвейера yaml. Вы увидите, что processParameters собственности нет. Поэтому вам не нужно определять свойство processParameters при использовании api для создания конвейера yaml. Yon только для определения файла yaml в свойстве процесса "process": { "yamlFilename": "azure-pipelines.yml", "type": 2}.

. В целях тестирования я сначала получаю определение формата json существующего конвейера yaml, а затем немного изменяю файл json , Затем я удаляю конвейер yaml из azure конвейерного интерфейса. Наконец, я использую Create Definiton API для создания конвейера yaml. Затем создается конвейер yaml, как и ожидалось.

Последний скриншот, который вы опубликовали в своем вопросе, находится в конвейере classi c. У конвейера Yaml нет секции Parameters.

свойство processParameters будет определять эту секцию Parameters. Он используется для связывания всех важных аргументов для задач, используемых в определении сборки. проверьте здесь для получения дополнительной информации о параметрах процесса в трубопроводе Classi c.

enter image description here

...