Библиотека сайта rus-linux.net
Непрерывная интеграция
Глава 9 из книги "Архитектура приложений с открытым исходным кодом", том 1.
Оригинал: Continuous Integration
Автор: C. Titus Brown, Rosangela Canino-Koning
Перевод: А.Панин
9.1.2. Внешние взаимодействия
Системам непрерывной интеграции также требуется осуществлять взаимодействия с другими системами. Существует несколько типов потенциальных взаимодействий:
- Оповещения о сборке: Выходные данные процессов сборки в общем случае должны быть переданы заинтересованным в них клиентам либо с помощью размещения информации (на веб-ресурсах, по RSS, RPC, и.т.д), либо с помощью уведомления (посредством электронной почты, Twitter, PubSubHubbub, и.т.д.) Уведомление может относиться ко всем сборкам, неудачным сборкам или сборкам, не завершившимся в течение указанного периода времени.
- Информация о сборке: Иногда может потребоваться получение информации о сборке или передача собранных программных продуктов, что обычно реализуют с помощью механизма удаленного вызова процедур (RPC) или системы для получения больших объемов данных. Например, может возникнуть желание использовать внешнюю систему анализа для более глубокого или специфического анализа или создания отчета о степени охвата кода или производительности приложения. В дополнение к этому может быть создан внешний тестовый репозиторий с целью отслеживания успешных и неудачных результатов тестов вне системы непрерывной интеграции.
- Запросы сборок: Обработка внешних запросов сборок от пользователей или репозитория исходного кода также может оказаться необходимой. Большинство систем контроля версий имеют дополнительные точки вызова функций после модификации кода, с помощью которых может быть осуществлен удаленный вызов процедуры, например, инициирующей сборку. Также пользователи могут вручную запрашивать сборки с помощью веб-интерфейса или удаленных вызовов других процедур.
- Удаленное управление системой непрерывной интеграции: В более общем случае весь процесс работы системы непрерывной интеграции может быть модифицирован в реальном времени с помощью более или менее хорошо проработанного интерфейса удаленных вызовов процедур. Либо расширения для вызова произвольных функций, либо более формально спроектированный интерфейс могут потребоваться для выполнения сборок на заданных платформах, указания альтернативных веток исходного кода с целью осуществления сборки с различными патчами, а также для выполнения дополнительных сборок в зависимости от условий. Эти возможности полезны для поддержки систем с более обобщенным рабочим процессом, т.е. для разрешения модификации исходного кода только после прохождения измененным кодом всех тестов системы непрерывной интеграции или тестирования патчей в широком спектре систем перед финальной интеграцией. Ввиду использования различных систем регистрации ошибок, систем работы с патчами и других внешних систем, включение этой логики в состав системы непрерывной интеграции может не иметь смысла.
Продолжение статьи: Модель реализации: Buildbot.