Об этом проекте

Freshmaker предназначен для автоматической перестройки различных программных артефактов после изменения их зависимостей. Например, он может перестроить модуль, когда файл .spec RPM обновляется, или когда RPM переходит в стабильную версию через Bodhi. Аналогично, он может перестроить контейнерные образы, когда RPM внутри контейнера обновляется. Сервис предоставляет REST API для получения информации о перестройках артефактов и причинах этих перестроек, а также отправляет сообщения в шину сообщений о этих событиях. Архитектурно Freshmaker основан на паттерне Event-Handler. События — это сообщения fedmsg, получаемые от других сервисов, таких как dist-git, Koji и Bodhi. Обработчики — это небольшие классы, которые используют высокоуровневый API, предоставленный ядром Freshmaker, для перестройки артефактов. Система также предоставляет высокоуровневый API для отслеживания зависимостей между артефактами, что делает процесс перестройки эффективным и надежным. Рабочий процесс включает ожидание новых сообщений fedmsg об обновлениях артефактов, разбор этих сообщений в объекты Event, а затем обработку этих событий с помощью конкретных обработчиков. Эти обработчики определяют список артефактов, которые необходимо перестроить, планируют перестройку в виде дерева, чтобы обеспечить правильный порядок сборки, подготавливают предварительные условия (например, генерируют обновленные репозитории RPM) и, наконец, запускают перестройку. Freshmaker включает встроенную поддержку для общих задач, таких как управление базой данных для артефактов и их зависимостей, а также интеграцию с системами, такими как Koji и ODCS, для запуска сборок.