Поделиться через


Рекомендации по улучшению скорости сборки

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

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

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

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

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

Основные стратегии проектирования

Оптимизация времени сборки

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

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

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

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

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

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

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

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

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

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

Минимизация вмешательства человека

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

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

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

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

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

Упрощение функций Azure

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

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

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

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

Контрольный список операционных знаний

Ознакомьтесь с полным набором рекомендаций.