Повторное использование одного и того же конвейера сборки для разных репозиториев в Azure DevOps

#azure-devops #azure-pipelines #azure-pipelines-build-task

#azure-devops #azure-конвейеры #azure-pipelines-build-task

Вопрос:

У меня есть проект в Azure DevOps, содержащий несколько разветвлений одного и того же основного репозитория. Я создал конвейер сборки для этого репозитория, который, к сожалению, не может быть повторно использован для нынешних форков, поскольку конвейер может быть настроен только для одного репозитория.

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

Есть ли способ использовать один конвейер для нескольких репозиториев?

Ответ №1:

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

пример, как повторно использовать файл шага из другого репозитория

 resources:
  repositories:
  - repository: DevOps
    type: git
    name: DevOps
trigger: none

jobs:
- template: vsts/yaml/build.yaml@DevOps
  parameters:
    solutionName: xxx
    registryName: yyy
 

Вы можете ознакомиться с официальными документами для получения дополнительных примеров

https://docs.microsoft.com/en-us/azure/devops/pipelines/process/templates?view=azure-devops

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

1. Это решает проблему дублирования конфигурации в каждом репозитории, что хорошо, но, похоже, мне все еще нужно создавать конвейер для каждой вилки. Это верно?

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

3. @4c74356b41 где я могу сослаться на файл шаблона? Я не нахожу такой опции.

Ответ №2:

Это включено в дорожную карту на третий квартал 2019 года:

Поддержка нескольких репозиториев для конвейеров YAML https://dev.azure.com/mseng/AzureDevOpsRoadmap/_workitems/edit/1454026

Обновление: теперь это реализовано: https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/multi-repo-checkout?view=azure-devops#triggers

«Триггеры

Вы можете запустить конвейер, когда обновление передается в собственный репозиторий или в любой из репозиториев, объявленных как ресурсы «.

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

1. Я считаю, что рабочий элемент касается триггеров во внешних репозиториях, а не фактического включения шаблонов из внешних репозиториев, которые уже есть в общедоступных документах — docs.microsoft.com/en-us/azure/devops/pipelines/process /…

2. @alv, боюсь, я не понимаю вашего комментария. Мой ответ (рабочий элемент, запланированный MS) — это именно то, чего хочет исходный плакат (и я тоже): повторно использовать один и тот же конвейер сборки для разных репозиториев с помощью триггеров CI или триггеров PR. Использование шаблонов — это незавершенное решение, которое по-прежнему требует конвейера для каждого репозитория, что может быть кошмаром для поддержки (например, изменение имени шаблона или добавление параметра)

3. Сейчас выполняется Q4.

4. Каждый ли это сделал?