Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Непрерывная интеграция

Глава 9 из книги "Архитектура приложений с открытым исходным кодом", том 1.

Оригинал: Continuous Integration
Автор: C. Titus Brown, Rosangela Canino-Koning
Перевод: А.Панин

9.2.5. Рецепты сборки

Рецепты сборки добавляют полезный уровень абстракции, особенно в случаях сборки кроссплатформенного программного обеспечения или использования мультиплатформенной системы сборки. Например, система CDash использует строгий тип рецептов сборки; большая часть, а возможно и все программное обеспечение, использующее для сборки систему CDash, подвергается обработке с помощью таких инструментов, как CMake, CTest и CPack, которые разрабатывались с учетом возможностей мультиплатформенных сборок. Это идеальная ситуация с точки зрения системы непрерывной интеграции, так как она может просто делегировать решение всех проблем сборочному инструментарию.

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

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


Продолжение статьи: Управление доверенными ресурсами.