Знаете ли вы, что вы можете указать несколько репозиториев в одном трубопроводе Azure DevOps YAML и вызвать его запуска по обновлениям любого из репозиториев? Позволь мне показать тебе как
видео
Как обычно, если вы Визуальный ученик , или просто предпочитаю смотреть и слушать вместо чтения, здесь у вас есть Видео со всем объяснением и демонстрацией , что, чтобы быть справедливым, много более полное чем этот пост.
Ссылка на видео: https://youtu.be/6cxaedezzrm
Если вы предпочитаете читать, хорошо … давайте просто продолжим:)
Шаг 1: Основной трубопровод
Начнем с очень простого определения трубопровода:
trigger: - main pool: vmImage: 'ubuntu-latest' steps: - checkout: self - script: dir $(Build.SourcesDirectory)
Здесь нечего увидеть, просто трубопровод, который использует свой собственный репо и распечатывает контент после оформления заказа
Шаг 2: Добавьте больше репозиторов
Давайте теперь сделаем это немного интереснее, добавив к нему дополнительные репо. Мы будем использовать Ресурсы
раздел для этого.
resources: repositories: - repository: tools type: git name: MyProject/tools ref: main
В этом случае мы добавляем репозиторий с именем Инструменты Это принадлежит проекту Azure DevOps MyProject и мы говорим Azure Tipelines, чтобы «рассмотреть» филиал главный ( Я объясню через мгновение, что я имею в виду под этим ) и использовать Инструменты в качестве ссылочного названия для этого.
Мы также можем Ссылка на репозиторий GitHub :
- repository: MyGitHubRepo type: github endpoint: MyGitHubServiceConnection name: MyGitHubOrgOrUser/MyGitHubRepo ref: releases/123
Довольно похоже на другой пример, но чтобы подключиться к GitHub, мы должны были указать Сервисное соединение Имя (в параметре конечная точка ). Обратите внимание, что здесь ссылочное имя это Mygitrepo
Наконец, мы также можем добавить репозитории в Еще одна организация Azure DevOps , Аналогичным образом:
- repository: MyOtherAzureReposGitRepository endpoint: OtherOrgAzureReposGitServiceConnection type: git name: OtherProject/MyAzureReposGitRepo
Нам нужно использовать Сервисное соединение Кроме того, потому что мы собираемся подключиться к другой организации. Обратите внимание, что в этом случае мы не указали ветвь (что действительно необязательно).
Шаг 3: Триггеры
В этот момент у нас есть все наши репозитории, упомянутые в рабочем процессе, но трубопровод все еще запускается только на местном репо:
trigger: - main
Если мы хотим, чтобы это было вызвано также из другого репо, мы можем добавить раздел триггера в определение репозитория:
- repository: tools type: git name: MyProject/tools ref: main trigger: - dev - release
Например, при приведенном выше фрагменте наш трубопровод будет запускаться каждый раз, когда происходит изменение в противоречии Dev или Выпуск Ветви нашего Инструменты репо.
Как насчет Главный Вы указано выше, спросите вы? Ну, это не для триггеров … ( я знаю, сбивая с толку … продолжайте читать, и вы узнаете;) )
На момент написания, триггеры работают только для дополнительных репозиториев в Azure DevOps, в той же организации, где определяется трубопровод. GitHub Repos и другие репо, определенные как ресурсы, не могут быть использованы для запуска.
Шаг 4: Использование кода
Теперь у нас есть наши трубопроводы, которые запускаются несколькими репо. Вполне вероятно, что вы захотите также использовать код для этих дополнительных репо, верно?
- checkout: MyGitHubRepo - checkout: tools - checkout: MyOtherAzureReposGitRepository
Просто добавьте оформление заказа. Как видите, мы используем Имя ссылки Мы указали в разделе «Ресурсы», чтобы позволить проверить
шаг Знайте, что мы хотим, чтобы это было делать.
И вот, наконец, где ветвь в ref
Параметр вступает в игру, потому что это ветвь, которая будет проверена :
себя | по умолчанию филиал |
инструменты | главный |
Mygitrepo | Выпуски/123 |
Myazurereposgitrepo | по умолчанию филиал |
Если вы не указаете путь на шаге оформления заказа, Azure Pipelines будет использовать имя репозитория для создания папки, а не значения репозитория, которое используется для ссылки на репозиторий на шаге оформления.
Все вместе
Со всем, что мы добавили, наш трубопровод теперь будет выглядеть так:
resources: repositories: - repository: tools type: git name: MyProject/tools ref: main trigger: - main - release - repository: MyGitHubRepo type: github endpoint: MyGitHubServiceConnection name: MyGitHubOrgOrUser/MyGitHubRepo ref: releases/123 - repository: MyOtherAzureReposGitRepository endpoint: OtherOrgAzureReposGitServiceConnection type: git name: OtherProject/MyAzureReposGitRepo trigger: - main pool: vmImage: 'ubuntu-latest' steps: - checkout: self - checkout: MyGitHubRepo - checkout: tools - checkout: MyOtherAzureReposGitRepository - script: dir $(Build.SourcesDirectory)
Вы можете попробовать это, и вы увидите (благодаря последнему шагу), что весь код из 4 репо стоит для вас использоваться
Выводы
Эта функция полезна, например, если вы хотите потребляйте инструмент или библиотеку Из другого репозитория, и вы хотите запустить тесты для вашего приложения, когда обновляется инструмент или библиотека.
Это также хорошо, если вы сохраните свой Ямл файл в отдельном репозитории из кода приложения, и вы хотите запустить трубопровод каждый раз, когда обновление выдвигается в репозиторий приложения.
Дайте мне знать в разделе комментариев ниже, как вы думаете, что эта функция может относиться к вашим процессам.
Также оформление это видео , где я говорю о том, как запустить работу дальше в Azure Pipelines
Мол, поделиться и следуй за мной 🚀 Для большего содержания:
📽 YouTube ☕ Купить мне кофе 💖 Patreon 📧 Информационный бюллетень 🌐 CoderDave.io Веб -сайт 👕 Мерч 👦🏻 Страница Facebook 🐱💻 GitHub 👲🏻 Twitter 👴🏻 LinkedIn 🔉 Подкаст
Оригинал: «https://dev.to/n3wt0n/multiple-repositories-in-a-single-azure-pipeline-2oe2»