Motivation
As of today, we only run integration tests for Foreman and Foreman+Katello on a regular (daily) basis.
All other plugins are excluded and might be in a broken or even not-installable state.
It’s time to change this situation, at least for the major plugins we have.
Idea
Based on the pipelines we currently have for Katello (install and upgrade), we can design similar pipelines for other plugin sets. We can start with the “Luna” (see luna.yml) set and other sets can be added in the future when the current workflow is settled. As the current setup lacks tests for the various plugins, we will start with Katello tests and add plugin-specific tests later on.
Benefits
- co-installability of plugin RPMs is tested
- configuration (installer) and db-seeds of the plugins are tested in a production setup
- upgrade issues can be caught early (even with an “empty” database)
- allows us to add integration tests for the plugins
Drawbacks
- will require compute resources (roughly the same as Katello), but this shouldn’t be a real problem these days
- will require someone to look at and analyze the results of the runs
Possible implementation
We should start “small” and evolve from there.
Level 1
- Clone Katello install and upgrade pipelines and make them install the Luna set of plugins
- External proxy can be ignored if it’s too much work (but shouldn’t)
- No new tests are written, only Foreman and Katello tests are executed.
This would already ensure installability of the plugins plus proper upgrade paths. - Configure Jenkins to run the nighly version of these pipelines at least weekly
Level 1.5
- When the pipelines are stable for a few runs, enable notifications to the “Infa & CI” group on discourse
Level 2
- Add integration tests for the individual plugins
Level 3
- Add pipeline definitions for released versions like it’s done for Katello
Level 4
- Make the nightly pipeline block RPM promotion?
Proof of Concept
evgeni’s luna-pipe branch