Rebuilding Modules and Containers Freshmaker Rebuilding Modules and Containers Presented by Jan Kaluža
Topics Motivation How does it work? Events and policies Container rebuilds Current stats and plans for future
Motivation Maintainer updates the spec file He probably rebuilds the RPM, but ... … who rebuilds container images? … who rebuilds layered container images? ... who rebuilds modules containing the RPM? … who rebuilds container images based on a modules? How can we know that we ship latest SW in modules, container images, … ?
Freshmaker Listens on fedmsg bus for events. Git, Koji, Module Build Service, … Tracks the dependencies between artifacts using PDC, Koji, Git, ... When artifact is updated, rebuilds everything depending on it. Freshmaker does not do the rebuilds itself, but it asks Koji or MBS to do the build.
Freshmaker Tracks the progress of rebuilds. Has REST API to get the status of rebuilds. Tracks the reason for rebuild of every artifact.
Artifacts and Events Container images: New version of RPM in container image is built, tested or released. Parent container image is rebuilt. Modules: Package in module is updated. Module definition (modulemd file) is updated. New module stream is added.
Policies Freshmaker does the hard work, but ... … we cannot enable automatic rebuilds of every artifact on any event. We need to write down policies to limit Freshmaker, for example: Combine multiple updated artifacts into a single rebuild instead of rebuilding them separately. Rebuild a container image with a security fix ASAP. Who decides the policy for Fedora?
Container Rebuilds Two ways how to do the rebuilds we can later release: Simple one – rebuild when RPM hits Fedora stable. Freshmaker supports that today! Container image cannot be tested/released together with RPM. Complex one – rebuild when RPM is signed (or certain tests defined by Greenwave pass). Container can be tested/released together with RPM. This needs policy and tests for container images.
What to Do After Rebuild? Work of Freshmaker ends up when artifacts are rebuilt. But we need to ship them. This is out of scope for Freshmaker. But there are plans for “Release maker”. It will only only send email to maintainer telling him the artifact is rebuilt and lists the reason of rebuild ...
After Flock We are going to deploy a staging and production instance of Freshmaker. At first phase of deployment, Freshmaker will rebuild modules. In the meantime, we want to discuss and write down the policies for Freshmaker.
How to Get Involved Find more use-cases, discuss policies. Contribute to code. https://pagure.io/freshmaker Reach out at: #fedora-modularity @ freenode jkaluza@redhat.com