Рубрики
Uncategorized

Многочисленные репозитории в одном лазурном трубопроводе

Знаете ли вы, что вы можете указать несколько репозиториев в одном трубопроводе Azure DevOps YAML и вызвать его … Tagged с Azure DevOps, DevOps, CI CD, Azure.

Знаете ли вы, что вы можете указать несколько репозиториев в одном трубопроводе 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»