Sobre el proyecto

Freshmaker es un servicio diseñado para reconstruir automáticamente varios artefactos de software después de que sus dependencias hayan cambiado. Por ejemplo, puede reconstruir un módulo cuando se actualiza el archivo .spec de un RPM o cuando se envía un RPM a estable a través de Bodhi. De manera similar, puede reconstruir imágenes de contenedores cuando se actualiza un RPM dentro del contenedor. El servicio proporciona una API REST para recuperar información sobre las reconstrucciones de artefactos y las razones de estas reconstrucciones, y envía mensajes al bus de mensajes sobre estos eventos. Arquitectónicamente, Freshmaker se basa en un patrón de Manejador de Eventos. Los eventos son mensajes fedmsg recibidos de otros servicios como dist-git, Koji y Bodhi. Los manejadores son pequeñas clases que utilizan la API de alto nivel proporcionada por el núcleo de Freshmaker para reconstruir artefactos. El sistema también proporciona una API de alto nivel para rastrear dependencias entre artefactos, lo que hace que el proceso de reconstrucción sea eficiente y confiable. El flujo de trabajo implica esperar nuevos mensajes fedmsg sobre actualizaciones de artefactos, parsear estos mensajes en objetos de Evento y luego manejar estos eventos con manejadores específicos. Estos manejadores identifican la lista de artefactos que deben ser reconstruidos, planifican la reconstrucción en una estructura en forma de árbol para garantizar el orden de construcción correcto, preparan los prerrequisitos (como generar repositorios de RPM actualizados) y finalmente inician la reconstrucción. Freshmaker incluye soporte integrado para tareas comunes como la gestión de bases de datos para artefactos y sus dependencias, e integración con sistemas como Koji y ODCS para iniciar compilaciones.