Рекомендации по повышению скорости сборки

Применяется к этой рекомендации по контрольным спискам эффективности операционных процессов Azure Well-Architected Framework:

OE:04 Оптимизируйте процессы разработки программного обеспечения и контроля качества, следуя проверенным отраслевым методикам разработки и тестирования. Для однозначного назначения ролей стандартизируйте методики для различных компонентов, таких как инструменты, система управления версиями, шаблоны проектирования приложений, документация и руководства по стилю.

Связанные руководства: Рекомендации по стандартизации средств и процессов | Рекомендации по использованию непрерывной интеграции

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

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

Ключевые стратегии проектирования

Время сборки

Чтобы ускорить сборку, можно:

  • Выбор агентов, соответствующих вашим требованиям к производительности. Ускорьте сборки, выбрав нужные компьютеры сборки. С быстрыми компьютерами время будет исчисляться в минутах, а не часах. Если конвейеры находятся в Azure Pipelines, вы можете выполнять задания с помощью агента, размещенного корпорацией Майкрософт. При использовании агентов, размещенных в Майкрософт, обслуживание и обновление выполняются за вас. Дополнительные сведения см. в разделе Агенты, размещенные на сервере Майкрософт.

  • Оптимизация расположения сервера сборки. При сборке кода данные передаются по сети. Входные данные для сборок извлекаются из репозитория системы управления версиями и репозитория артефактов. Необходимо скопировать выходные данные процесса сборки, включая скомпилированные артефакты, отчеты о тестах, результаты протестированного кода и отладочные символы. Важно, чтобы эти действия копирования выполнялись быстро. Если вы используете собственный сервер сборки, убедитесь, что сервер сборки расположен рядом с источниками и целевым расположением. Быстрая отправка и скачивание может сократить общее время сборки.

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

  • Оптимизация сборки:

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

    • Включите параллельные запуски набора тестов, что часто экономит большое количество времени, особенно при выполнении тестов интеграции и пользовательского интерфейса. Дополнительные сведения см. в статье Параллельное выполнение тестов для любого средства выполнения тестов.

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

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

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

Вмешательство оператора

Ваша организация может создать несколько разных типов сборок для оптимизации времени сборки. Возможные сборки:

  • Сборка с непрерывной интеграцией (CI). Цель этой сборки — убедиться, что код компилируется и выполняются модульные тесты. Эта сборка активируется при каждой фиксации. Он служит пульсом проекта и немедленно предоставляет команде качественные отзывы. Дополнительные сведения см . в разделе Указание событий, запускающих конвейеры.

  • Ночная сборка. Целью ночной сборки является не только компиляция кода, но и обеспечение регулярного выполнения всех более крупных наборов тестов, которые неэффективны для каждой сборки. Обычно эти тесты включают в себя тесты интеграции, пользовательского интерфейса или тесты состояния. Дополнительные сведения см. в разделе Настройка расписаний для конвейеров.

  • Сборка выпуска. Помимо компиляции и выполнения тестов, эта сборка также компилирует документацию ПО API, отчеты о соответствии, подписывание кода и другие действия, которые не требуются при каждой сборке кода. Эта сборка предоставляет золотую копию, которая отправляется в конвейер выпуска для окончательного развертывания в рабочей среде.

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

Упрощение поддержки Azure

Azure DevOps — это набор служб, которые помогают создать совместную, эффективную и согласованную методику разработки.

Используйте Azure Pipelines для создания и выпуска служб для поддержки непрерывной интеграции и непрерывной поставки (CI/CD) приложений.

Используйте GitHub Actions для Azure для автоматизации процессов CI/CD и непосредственной интеграции с Azure для упрощения развертываний. Вы также можете создавать рабочие процессы, которые создают и тестируют каждый запрос на вытягивание в репозиторий, или развертывают объединенные запросы на вытягивание в рабочей среде с помощью GitHub Actions для Azure.

Агенты, размещенные в Майкрософт , изначально доступны в Azure Pipelines. Эти агенты являются одноразовыми виртуальными машинами, которые используются только для одного задания, а затем удаляются, что позволяет легко управлять сборками.

Контрольный список эффективности операций

См. полный набор рекомендаций.