YAML для Azure конвейера для кода MonoRepo на локальном агенте - PullRequest
0 голосов
/ 26 мая 2020

Я впервые использую Azure Devops, и мне нужно создать процесс CI / CD для проекта монорепозитория, размещенного на Azure Repos. Вот краткое описание.

  • Репозиторий Git содержит внутри несколько проектов, которые я хотел бы построить в отдельных конвейерах, поскольку они имеют отдельные файлы сборки и не имеют взаимозависимостей. Например. Макет проекта

RepoA

LinuxProject

FirmwareProject

TestProject
  • У меня есть собственный агент Azure (RepoABuild) со всеми установленными инструментами, которые я хотел бы построить эти проекты на.

  • Требование к YAML-файлу LinuxProject:

    • Запуск сборки, когда изменение источника происходит только в каталоге LinuxProject
    • Используйте агент RepoABuild для сборки
    • Выполнить bash команды «cd RepoA / LinuxProject», «source opt / lib / linux / settings. sh» и «создать изображения»
    • Заархивируйте артефакты, присутствующие в каталоге «RepoA / LinuxProject / Build»

Может ли кто-нибудь здесь помочь мне с этим требованием или указать мне какой-либо пример? Буду очень признателен за вашу помощь

1 Ответ

1 голос
/ 26 мая 2020

Вы можете выполнить следующие шаги, чтобы создать конвейер yaml для LinuxProject:

1, Создайте файл yaml и зафиксируйте его в своем azure репозитории (например, LinuxProject-pipeline.yml).

2, Создайте конвейер yaml из портала проекта azure.

Войдите в свою Azure DevOps-организацию и перейдите к своему проекту.

В своем проекте, перейдите на страницу Конвейеры . Затем выберите действие для создания нового конвейера .

Выполните шаги мастера, сначала выбрав Azure Repos Git в качестве местоположения вашего исходный код.

Пройдите по шагам мастера и выберите Существующий Azure Конвейеры Yaml файл . В открывшемся окне выберите файл LinuxProject-pipeline.yml, созданный на первом этапе.

enter image description here

3, Add below content to LinuxProject-pipeline.yml file.

trigger:
  paths:
    include:
    - LinuxProject/*

pool: your-self-hosted-agent-pool

steps:

- bash: |
    cd RepoA/LinuxProject
    source opt/lib/linux/settings.sh
    make images

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: $(Build.SourcesDirectory)/LinuxProject/Build
    archiveFile: $(Build.ArtifactStagingDirectory)/LinuxProject.zip

In above yaml file, the trigger defines a path filter which makes the pipeline only be triggered when changes happens in folder LinuxProject. See здесь для получения дополнительной информации о триггере

Пул , определите его значение для имени пула агентов, в котором находится ваш локальный агент (RepoABuild). (Отметьте этот поток , чтобы использовать требования, если у вас есть несколько агентов с собственным хостом в пуле агентов)

Добавить задачу bash для запуска команд bash

Добавьте ArchiveFiles задачу для архивации результата сборки.

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

Для начала ознакомьтесь с документом для начала работы .

Здесь основные принципы работы конвейера c концепции.

Здесь - ссылка на схему Yaml.

Здесь - предопределенные переменные, которые вы можете использовать непосредственно в конвейере (например, $ (Build.ArtifactStagingDirectory) в приведенной выше задаче архивного файла относится к foler c:\agent_work\1\a на вашем компьютере агента).

...