Azure DevOps Pipelines с GitHub, введение
Azure DevOps — это набор инструментов для эффективного создания и предоставления продукта. Это онлайн-приложение с доской Azure Board для Scrum и Kaban, репозиторием, репозиториями Azure, использующими git и tfs, Wiki, управлением артефактами, Azure Artefact, инструментом исследовательского тестирования, планом тестирования Azure и CI/CD. конвейер, Azure DevOps Pipelines.
Как запустить конвейер для тестирования и сборки кода из репозитория GitHub с помощью Azure DevOps Pipeline?
Есть несколько шагов:
- Вам нужна учетная запись GitHub
- Вам также потребуется учетная запись Azure DevOps (вы также можете войти в Azure DevOps с помощью своей учетной записи GitHub).
Давайте начнем.
Для создания своей учетной записи и первого проекта Azure DevOps просто перейдите на https://dev.azure.com
Вы можете создать учетную запись или просто использовать свою учетную запись Github.
В GitHub нам нужно добавить расширение Azure DevOps. Просто нажмите «Marketplace» и найдите Azure Pipeline.
Нажмите «Настроить план».
Выберите Бесплатный план и нажмите «Установить бесплатно». Обратите внимание, что для публичного проекта вы получаете 10 параллельных заданий и неограниченное количество минут в месяц.
Нажмите, чтобы установить, чтобы закончить
Вы также можете сделать то же самое с приложением Azure Board.
Проект Azure DevOps не является общедоступным автоматически. Если вам нужны 10 заданий и/или неограниченное количество минут сборки, вам нужно убедиться, что видимость вашего проекта открыта для всех.
Конвейер сборки
Теперь мы можем создать конвейер сборки. В Azure DevOps существует два типа конвейеров: конвейер с графическим интерфейсом и конвейер на основе YAML.
Конвейер — это совокупность задач, запущенных на специализированном компьютере, созданная только для этого и которая в конце будет уничтожена. В Azure DevOps этот компьютер является агентом. Этот агент поставлялся с инструментами для запуска задач сборки, компилятором (Go, .net, Visual Studio,...), средой выполнения и SDK (.net,...), инструментами (Git, Chocolatey, Nuget, NPM,...), скриптовые движки (PowerShell, Python, …), драйверы.
Есть несколько онлайн-агентов:
- Windows 2019 с VS 2019
- Windows 2016 с VS 2017
- Windows 2012 R2 с VS 2015
- Образ контейнера Windows Server 1803
- Mac OS 10.14
- Mac OS 10.13
- Убунту 16.04 лт
Этот компьютер работает в Azure на виртуальной машине DS2 v2. Они изолируются и удаляются в конце конвейера.
Вы можете проверить эту страницу , чтобы получить больше информации об этих агентах.
Для конвейеров графического интерфейса
В Azure DevOps перейдите в Pipeline и нажмите New Pipeline.
Нажмите «Использовать классический редактор».
В разделе «Выбор источника» выберите GitHub. Если вы не видите подключения к своим репозиториям GitHub, вы все равно можете создать его здесь.
Выберите свой репозиторий и ветку
Затем выберите пустую работу
Теперь у нас есть конвейер интеграции. Если вы посмотрите справа, вы можете изменить имя конвейера и агента по умолчанию. Вы можете выбрать:
нт, Выберите агент, который подходит для вашего проекта, для демонстрации я буду использовать "Hosted Windows 2019 with VS2019"
Нажмите «Сохранить и поставить в очередь» и выберите «Сохранить», чтобы сохранить модификацию (если вы нажмете «Сохранить и поставить в очередь», это вызовет конвейер и появится в истории сборки).
Справа вы можете увидеть первую задачу пайплайна «Получить исходники». Исходный код из ветки будет копироваться на агент при каждом запуске конвейера.
Вы можете управлять поведением, нажав на него. Здесь вы можете пометить источники или проверить подмодуль.
Возможно, вам придется использовать некоторое значение во время сборки. Это может быть номер сборки, путь, имя модуля или некоторые секретные значения, такие как пароли, ключи и т. д. Это назначение вкладки "переменные".
Вы можете добавить сюда некоторые переменные, но лучший способ сделать это — создать группу переменных и связать ее здесь.
Чтобы добавить группу переменных, вам нужно перейти в «Библиотека» в меню «Конвейер» слева. Нажмите «+ Группа переменных», чтобы добавить новую группу. Дайте имя новой группе переменных и нажмите «+ Добавить», чтобы добавить новую переменную и ее значение.
Обратите внимание на значок замка справа. Если вы нажмете на нее, значение переменной маскируется. Значение также будет замаскировано в консоли или в журнале. Это не функция безопасности, так как скрипт может легко получить доступ к значению и каждому администратору.
Если вам нужно управлять секретами с помощью конвейера, вы можете включить ссылку на подписку Azure и выбрать Key Vault. Azure DevOps будет действовать как прокси для хранилища ключей.
Вы можете оценить эти переменные на хосте агента через переменные среды во время сборки.
Чтобы создать процесс сборки, нам нужно добавить задачи в задание агента. Щелкните значок + рядом с именем задания агента и выберите одну или несколько задач. Это может быть задача сценария, тест, задача компиляции… вы также можете просмотреть рынок, чтобы найти задачу, подходящую для вашего проекта.
Задачи обычно включают компиляцию кода, модульное и приемочное тестирование, упаковку и другие связанные задачи.
По умолчанию, если задача завершается сбоем, она останавливает процесс и сообщает об ошибке, но вы можете управлять этим поведением, выбрав задачу и перейдя к «Параметры управления» на левой панели. Вы можете использовать параметр «Продолжить при ошибке», чтобы задача не останавливала процесс в случае сбоя. Это может быть полезно в ситуации, когда запуск тестов и их публикация находятся в двух задачах.
По умолчанию конвейер не запускается какой-либо фиксацией в репозиториях GitHub. Нам нужно настроить, как конвейер будет реагировать на фиксацию или запрос на извлечение.
На вкладке «Триггеры» мы можем включить или отключить непрерывную интеграцию. У вас есть два основных варианта.
- Непрерывная интеграция, при которой каждая фиксация в ветке запускает процесс сборки.
- Проверка запроса на вытягивание, при которой каждый PR запускает процесс сборки. Вам нужно будет выбрать хотя бы одну ветку.
Имейте в виду, что GitHub разрешает запросы на извлечение из разветвленных репозиториев. Секреты, связанные со сборкой, не будут доступны для разветвленного PR и могут вызвать ошибку сборки. Вы можете включить эти секреты с помощью «Сделать секреты доступными для создания вилок», но это может вызвать некоторые проблемы с безопасностью.
Для конвейеров на основе YAML
Процесс создания конвейера на основе YAML не сильно отличается.
Вместо того, чтобы нажимать «Использовать классический редактор», вам просто нужно нажать на GitHub. Выберите свои репозитории GitHub, и вам нужно будет выбрать вариант, использовать начальный файл yaml, файл yaml, созданный в ваших репозиториях Azure DevOps, или выбрать существующий.
Для первого вы заметите новую фиксацию под названием «Настройка CI с Azure Pipelines» и новый файл azure-pipelines.yml в репозиториях GitHib. Большая часть конфигурации конвейера находится в этом файле.
Файл yaml представляет собой иерархию
x Конвейер
x Этапы
x Задания
x Шаги
x задачи
Вы можете получить полную ссылку здесь .
Но вы можете начать с более минималистичной версии.
Давайте начнем с триггера, так как в версии с графическим интерфейсом вы можете управлять запуском конвейера.
trigger: - master
Это будет запускать конвейер сборки каждый раз для каждой новой фиксации в основной ветке.
Точно так же мы можем включить конвейер для запроса на вытягивание для той же ветки.
pr: - master
Мы также можем импортировать группу переменных из библиотеки
variables: - group: VarGroupName
Также возможно определить жестко закодированные переменные
variables: modulename: MyModule DefaultVersion: 0.0.1
После этого мы можем настроить хост-версию агента.
Pool: vmImage: windows-2019
Что касается версии с графическим интерфейсом, то здесь ограниченный список агентов.
И, наконец, мы можем добавить нужные нам задачи под шаг
steps: - task: PowerShell@2 displayName: BuildScript inputs: targetType: filePath filePath: '$(System.DefaultWorkingDirectory)\azdo-build.ps1'
Обратите внимание на использование системной переменной здесь
Как и в версии с графическим интерфейсом, вы можете добавить одну или несколько задач и контролировать поведение задачи в случае ошибки.
continueOnError: true
Теперь, когда вы видите, как мы можем настроить конвейер с помощью одного файла, вы можете видеть, что конвейер на основе yaml менее прост, но намного мощнее, чем версия с графическим интерфейсом.
Как можно объявить всем о состоянии сборки?
Мы можем сделать это со значком.
Значки — это динамические изображения, размещенные в Azure DevOps.
Изменение образа в зависимости от состояния сборки, еще не выполнено, успешно, неудачно. Вы можете поместить в файл README.md проекта GitHub. Чтобы получить значок конвейера, просто нажмите на 3 точки слева.
Нажмите на значок «Статус».
Вам просто нужно скопировать и вставить Markdown в файл README.md.
Заключение
Это просто введение в использование Azure DevOps Pipelines с GitHub. Как видите, YAML — самый мощный инструмент для создания CI. Вы также можете создать конвейер компакт-дисков с помощью Azure DevOps для доставки продукта.