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