Рекомендации по улучшению скорости сборки
Применяется к этой контрольной рекомендации по операционному превосходству в 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. Эти агенты представляют собой однопользовательские виртуальные машины, которые используются только для одного задания, а затем удаляются, что позволяет легко управлять сборками.
Дополнительные ссылки
- Azure DevOps
- Azure Pipelines
- Настройка и оплата параллельных заданий
- Настройка расписаний для конвейеров
- Создание пулов агентов и управление ими
- GitHub for Actions for Azure
- Размещенные агенты Microsoft
- Параллельное выполнение тестов для любого тестового средства выполнения
- Указание событий для активации конвейеров
- Указание заданий в конвейере
Контрольный список операционных знаний
Ознакомьтесь с полным набором рекомендаций.