Azure DevOps API запускает один этап из многоступенчатого конвейера

#azure-devops #yaml #azure-pipelines #azure-devops-rest-api

#azure-devops #yaml #azure-конвейеры #azure-devops-rest-api

Вопрос:

Я нахожусь в ситуации, когда у меня есть несколько конвейеров, на выходе которых будет полное решение. Поэтому я буду запускать эти конвейеры из «материнского» конвейера, используя Azure DevOps REST API. Мне удается поставить конвейер в очередь и запустить его. Но этот конвейер многоступенчатый (DTAP).

Я хотел бы запустить только один этап. Кто-нибудь знает, где я должен искать или что я должен делать?

Комментарии:

1. Вы проверили следующие ответы? Полезны ли они?

Ответ №1:

На данный момент это невозможно. Пожалуйста, ознакомьтесь с этим разделом — Как использовать API ADO REST для запуска одного этапа в многоступенчатом конвейере YAML?

В настоящее время нет такого API для запуска определенного этапа в многоступенчатом конвейере YAML.

Однако многоступенчатыми конвейерами на основе YAML теперь можно управлять из командной строки с помощью команды az pipelines. Например, вы можете настраивать конвейеры и управлять ими в интерактивном режиме из командной строки или автоматизировать всю настройку с помощью скрипта, но, похоже, все еще не можете запустить определенный этап.

Здесь у вас есть запрос функции — REST API для запуска определенного этапа в многоступенчатом YAML pipeine.

Ответ №2:

Нет прямого способа запускать только определенные этапы, но вы можете украсить каждый этап условием. И вы можете передавать параметры (значения переменных) в конвейер во время очереди (также через API).

Добавляя и устанавливая переменные, вы можете управлять условием и, таким образом, определять, какой этап запускать.

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

Ответ №3:

Согласен с @jessehouwing. Вы можете указать условия, при которых выполняется каждый этап. По умолчанию этап выполняется, если он не зависит от какого-либо другого этапа или если все этапы, от которых он зависит, завершились успешно. Вы можете настроить это поведение, принудительно запустив этап, даже если на предыдущем этапе произошел сбой, или указав пользовательское условие.

Проверьте следующий пример использования пользовательского условия:

 stages:
- stage: A

- stage: B
  condition: and(succeeded(), eq(variables['build.sourceBranch'], 'refs/heads/master'))