Config Management Camp 2023 Ghent

How Vox Pupuli built their Continuous Integration
2023-02-06, 15:55–16:45, B.2.015

Vox Pupuli manages 175+ Puppet modules and heavily relies on GitHub Actions to do so. During this talk we'll go over how that's built, maintained and used.


Historically Vox Pupuli used Travis CI, but now relies on GitHub Actions. Unix taught us to build small and reusable components and then combine these. So we did.

To maintain the configuration on so many modules, modulesync is used with a configuration. Copying over a lot of code is an anti-pattern so duplication is minimized by using the reusable workflows in gha-puppet, which generates test matrices based on metadata.json using puppet_metadata. Gemfiles and spec helpers are kept minimal using voxpupuli-test, voxpupuli-acceptance and voxpupuli-acceptance.

Once everything is in place, it needs to be useful. GitHub Actions supports annotations and various tools generate these. There's RuboCop's GitHub formatter, puppet-lint's integration and rspec-github. The latter is used in beaker-rspec and puppetlabs_spec_helper.

As you can see, these are a lot of components. After this talk it should be clear how they fit together and support Vox Pupuli's workflows. Perhaps it can also support yours.

Slides are available.

Ewoud Kohl van Wijngaarden is a long time contributor to Foreman and Puppet. His Foreman involvement grew after first patch in 2012. Back in 2017 he joined Red Hat to work on Foreman full time. You can find his work in many areas, but primarily in the installer, packaging and release management. Foreman's installer is driven by Puppet and relies on various modules from the community, mostly from Puppet and Vox Pupuli. In Vox Pupupuli he maintains the CI configurations and various gems to make his life easier.

This speaker also appears in: