Открыть сервис

Azure Pipelines

Azure Pipelines — это облачный сервис непрерывной интеграции и непрерывной доставки (CI/CD), входящий в состав платформы Microsoft Azure DevOps. Он позволяет автоматизировать сборку, тестирование и развертывание программного обеспечения на различных платформах и в облачных средах. Azure Pipelines поддерживает работу с любым языком программирования, фреймворком и системой управления версиями, включая Git, GitHub, Azure Repos и Subversion.

История

Azure Pipelines был представлен компанией Microsoft в 2018 году как часть переименованной платформы Visual Studio Team Services (VSTS) в Azure DevOps. До этого сервис существовал под названием «Build and Release» в составе VSTS. Основной целью запуска было предоставление разработчикам гибкого и масштабируемого инструмента для автоматизации DevOps-процессов, интегрированного с экосистемой Azure. В 2019 году Microsoft объявила о бесплатном предоставлении Azure Pipelines для проектов с открытым исходным кодом, что значительно расширило его аудиторию.

Архитектура и основные компоненты

Azure Pipelines построен на модульной архитектуре, включающей несколько ключевых элементов:

Pipeline (конвейер)

Конвейер представляет собой последовательность шагов (steps), объединённых в задания (jobs) и этапы (stages). Каждый этап может содержать одно или несколько заданий, выполняемых параллельно или последовательно. Конвейеры описываются в YAML-файлах (.azure-pipelines.yml), которые хранятся в репозитории проекта, или настраиваются через графический интерфейс Azure DevOps.

Agent (агент)

Агент — это программное обеспечение, которое выполняет задания конвейера. Существует два типа агентов:

  • Microsoft-hosted agent — предварительно настроенные виртуальные машины, управляемые Microsoft. Доступны образы для Windows, Linux (Ubuntu, macOS) и других платформ. Поддерживаются версии с предустановленным ПО (например, .NET, Python, Node.js, Docker).
  • Self-hosted agent — агенты, развёрнутые пользователем на собственных серверах или в локальной сети. Позволяют использовать специфическое оборудование, лицензионное ПО или изолированные среды.

Task (задача)

Задача — это атомарная операция, выполняемая агентом. Azure Pipelines включает сотни встроенных задач для распространённых действий: компиляция кода, запуск тестов, публикация артефактов, развёртывание в облачные сервисы (Azure, AWS, Google Cloud) и отправка уведомлений. Пользователи могут создавать собственные задачи с помощью PowerShell, Bash, Python или Node.js.

Artifact (артефакт)

Артефакты — это файлы, создаваемые в процессе сборки (например, скомпилированные DLL, установочные пакеты, контейнерные образы). Они могут быть опубликованы в хранилище Azure Pipelines или переданы на этапы развёртывания.

Классификация конвейеров

Azure Pipelines поддерживает два основных типа конвейеров:

CI-конвейеры (Continuous Integration)

Автоматизируют сборку и тестирование кода при каждом изменении в репозитории. Типичные шаги: получение исходного кода, восстановление зависимостей, компиляция, запуск модульных тестов, анализ кода (например, с помощью SonarQube) и публикация артефактов. CI-конвейеры могут быть настроены на запуск по триггерам (push, pull request, расписание).

CD-конвейеры (Continuous Delivery/Deployment)

Отвечают за развёртывание артефактов в целевые среды (тестовые, стейджинговые, продуктивные). CD-конвейеры могут включать этапы утверждения (approval gates), ручное тестирование, канареечное развёртывание и откат изменений. Поддерживаются развёртывания в Azure App Service, Azure Kubernetes Service (AKS), виртуальные машины, локальные серверы и сторонние облачные платформы.

Поддерживаемые языки и платформы

Azure Pipelines не накладывает ограничений на используемые технологии. Из коробки поддерживаются:

Интеграция с системами управления версиями

Azure Pipelines может быть подключён к следующим репозиториям:

  • Azure Repos (встроенный Git-репозиторий Azure DevOps).
  • GitHub (через GitHub Actions или веб-хуки).
  • Bitbucket Cloud и Bitbucket Server.
  • GitLab (через веб-хуки).
  • Subversion (SVN).

Для каждого репозитория можно настроить триггеры, политики веток и проверки качества кода.

Безопасность и управление доступом

Azure Pipelines использует модель безопасности Azure DevOps, включающую:

  • Azure Active Directory (AAD) — аутентификация пользователей и групп.
  • Роли — владелец, участник, читатель для проектов и конвейеров.
  • Service connections — безопасное хранение учётных данных для внешних сервисов (например, Azure, Docker Hub, NuGet).
  • Variable groups — шифрование переменных и секретов (паролей, ключей API).
  • Approval gates — ручное утверждение перед развёртыванием в продуктивную среду.

Применение

Azure Pipelines используется в различных сценариях:

  • Автоматизация сборки и тестирования для команд разработки любого размера.
  • Развёртывание микросервисных архитектур в Kubernetes (AKS) или Service Fabric.
  • Мониторинг качества кода с интеграцией SonarQube, Checkmarx, Fortify.
  • Мультиплатформенная сборка — одновременная компиляция под Windows, Linux и macOS.
  • DevOps для мобильных приложений — сборка и подпись приложений для iOS (с использованием macOS-агентов) и Android.

Ограничения и критика

Несмотря на широкие возможности, Azure Pipelines имеет ряд ограничений:

  • Зависимость от экосистемы Microsoft — для полной интеграции с Azure DevOps требуется учётная запись Microsoft.
  • Сложность YAML-синтаксиса — для сложных конвейеров требуется глубокое знание синтаксиса и вложенных структур.
  • Ограничения бесплатного уровня — для частных проектов предоставляется ограниченное количество минут сборки (1800 минут в месяц для Microsoft-hosted агентов).
  • Проблемы с производительностью — при большом количестве параллельных заданий может наблюдаться задержка в выделении агентов.

Интересные факты

  • Azure Pipelines поддерживает запуск заданий в контейнерах Docker, что позволяет изолировать окружение и воспроизводить сборки на любом агенте.
  • Сервис интегрирован с Azure Boards, Azure Repos и Azure Test Plans, образуя единую платформу Azure DevOps.
  • В 2020 году Microsoft добавила поддержку GitHub Actions, что позволило использовать Azure Pipelines для автоматизации процессов в GitHub.

Источники

  • Microsoft Docs: Azure Pipelines documentation
  • Azure DevOps Blog: «Introducing Azure Pipelines» (2018)
  • Документация по YAML-схеме Azure Pipelines
  • Статья «CI/CD with Azure Pipelines» на портале Microsoft Learn

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →