Выбор размещенного агента сборки Майкрософт или собственного агента

Завершено

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

Что такое агенты сборки и пулы агентов

Агент сборки — это система, выполняющая задачи сборки. Его можно рассматривать как выделенный сервер, выполняющий процесс сборки.

Представьте, что у вас есть проект Azure Pipelines, который получает запросы на сборку много раз в день или, возможно, у вас есть несколько проектов, которые могут использовать один и тот же тип агента сборки. Агенты сборки можно объединить в пулы агентов, чтобы для обработки каждого запроса на сборку всегда имелся сервер наготове.

При активации сборки Azure Pipelines выбирает доступный агент сборки из пула. Если все агенты заняты, процесс ожидает, пока один из них освободится.

При использовании размещенного агента Майкрософт вы указываете, какой образ виртуальной машины из пула должен применяться. Вот пример из существующей конфигурации сборки, в котором используется агент сборки Ubuntu 20.04:

pool:
  vmImage: 'ubuntu-20.04'
  demands:
  - npm

При использовании размещенного агента Майкрософт вы указываете необходимый тип системы в vmImage. Корпорация Майкрософт предоставляет образы виртуальных машин различных типов, в том числе с Windows, macOS и различными разновидностями Linux.

В разделе demands указывается, какое программное обеспечение или возможности должны иметься на компьютере сборки.

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

pool:
  name: 'MyAgentPool'
  demands:
  - npm

Если раздел demands не нужен, синтаксис можно сократить следующим образом:

pool: 'MyAgentPool'

Вы создадите агент сборки и добавите его в пул далее в этом модуле.

Агенты каких типов можно использовать?

При выборе агента сборки следует учитывать два фактора:

  • Операционная система, в которой требуется создать
  • Можно ли использовать агент, размещенный корпорацией Майкрософт, или указать собственный агент.

Azure Pipelines поддерживает следующие операционные системы:

Выбранный агент сборки зависит главным образом от того, какие средства вы используете для сборки кода. Например, если для создания приложений вы используете Xcode, можно выбрать агент macOS. Если вам требуется Visual Studio, скорее всего, следует выбрать агент Windows.

Ваша существующая конфигурация сборки использует размещенный агент Майкрософт. Размещенные агенты выполняются в инфраструктуре, которую корпорация Майкрософт предоставляет для вас.

Частный агент использует инфраструктуру, которую вы предоставляете. Агент может быть системой, работающей в облаке или в центре обработки данных. Любая система работает, если агент соответствует вашим требованиям и может подключаться к Azure Pipelines. В этом модуле вы будете использовать виртуальную машину, которая работает в Azure, которую мы предоставляем.

Когда следует использовать собственный агент сборки?

Для многих задач сборки агент, размещенный корпорацией Майкрософт, выполняет все необходимые действия. Начать с него проще всего.

Корпорация Майкрософт отвечает за применение обновлений для системы безопасности и другие обновления операционной системы. Все, что необходимо сделать, — определить конфигурацию сборки, которую вы хотите запустить.

Кроме того, размещенные агенты имеют программное обеспечение для сборки приложений множества распространенных типов. Другое требуемое программное обеспечение можно добавлять в процессе сборки.

У размещенных корпорацией Майкрософт агентов есть несколько ограничений, в том числе:

  • Длительность сборки: задание сборки может выполняться до шести часов.
  • Место на диске: размещенные агенты предоставляют фиксированный объем хранилища для источников и выходных данных сборки. Это может быть недостаточно хранилища.
  • ЦП, память и сеть: размещенные агенты выполняются на виртуальных машинах общего назначения Microsoft Azure. Ресурсы ЦП, памяти и сети соответствуют размеру Standard_DS2_v2.
  • Интерактивность. Вы не можете войти в размещенный агент.
  • Общие папки: невозможно удалить артефакты сборки в общие папки универсального соглашения об именовании (UNC).

Хотя размещенные агенты сравнительно просты в настройке, помимо названных ограничений, использование собственных агентов сборки дает ряд преимуществ.

Например, при использовании размещенных агентов вы предоставляете общий доступ к инфраструктуре другим пользователям Azure DevOps. Хотя для запуска сборки обычно требуется всего несколько секунд, в зависимости от нагрузки в системе Майкрософт может потребоваться больше времени.

Кроме того, при использовании размещенных агентов вы получаете чистую систему с каждой сборкой. При вводе собственного агента сборки можно решить, следует ли выполнять чистую сборку каждый раз или выполнять добавочную сборку. При добавочной сборке вы создаете существующие средства сборки и скомпилированный код. Добавочная сборка может занять меньше времени, так как система уже имеет множество средств сборки и зависимых компонентов.

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

Как настроить частный агент сборки?

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

При настройке частного агента вы предоставляете инфраструктуру, в которой выполняются сборки. Это обеспечивает гибкость в отношении настройки и обслуживания агентов.

Например, доступны следующие возможности:

  • Настройте агент сборки вручную: вы открываете систему, войдите и интерактивно установите средства сборки и программное обеспечение агента.

  • Автоматизация процесса: вы запускаете систему и запускаете скрипт или средство для установки средств сборки и программного обеспечения агента. Настроить агент можно после того, как система заработает, или во время подготовки.

    Например, в случае с агентами сборки, работающими в Azure, можно использовать шаблон Azure Resource Manager (ARM) или Bicep, чтобы настроить систему на выполнение роли агента сборки за один шаг. Terraform от компании HashiCorp — еще один способ автоматизации процесса. Terraform работает с различными инфраструктурами, включая Azure.

  • Создайте изображение: вы создаете изображение (или моментальный снимок) настроенной среды. Затем с помощью этого образа можно создавать идентичные системы в пуле в любом количестве.

Настройка вручную — это хороший способ приступить к работе, так как он позволяет понять процесс. Кроме того, это самый быстрый подход, когда требуется всего лишь один агент сборки.

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

Изображения — это форма автоматизации. Они могут сэкономить время, так как все программное обеспечение предварительно настроено. В качестве компромисса может потребоваться периодически перестроить образы, чтобы включить последние исправления ОС и средства сборки. Packer от компании HashiCorp — это популярное средство для создания образов.

Для сценария Space Game вы решите использовать частный агент сборки.

Проверьте свои знания

1.

Предположим, вы создаете видеоигру. Процесс сборки длится два часа, а для компиляции ресурсов игры требуется 18–20 ГБ места на диске. Агент сборки какого типа можно использовать?

2.

Предположим, вы создаете приложение, которое работает в macOS, Linux и Windows. Как создать приложение для каждой целевой платформы?

3.

Локальный агент сборки: