About this project
Freshmaker is a service designed to automatically rebuild various software artifacts after their dependencies have changed. For instance, it can rebuild a module when an RPM's .spec file is updated or when an RPM is pushed to stable via Bodhi. Similarly, it can rebuild container images when an RPM within the container is updated. The service provides a REST API to retrieve information about artifact rebuilds and the reasons for these rebuilds, and it sends messages to the message bus about these events.
Architecturally, Freshmaker is based on an Event-Handler pattern. Events are fedmsg messages received from other services like dist-git, Koji, and Bodhi. Handlers are small classes that use the high-level API provided by Freshmaker core to rebuild artifacts. The system also provides a high-level API to track dependencies between artifacts, making the rebuilding process efficient and reliable.
The workflow involves waiting for new fedmsg messages about artifact updates, parsing these messages into Event objects, and then handling these events with specific handlers. These handlers identify the list of artifacts that must be rebuilt, plan the rebuild in a tree-like structure to ensure correct build order, prepare prerequisites (such as generating updated RPM repositories), and finally start the rebuild. Freshmaker includes built-in support for common tasks such as database management for artifacts and their dependencies, and integration with systems like Koji and ODCS for initiating builds.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.