Brainstorm on improving the CI pipeline
I've just moved the CI pipeline to openSUSE Tumbleweed, for a couple of reasons:
- I run that distro, so it's very easy for me to diagnose breakage in the test suite when the distro updates.
- Freetype recently changed something with text spacing; a bunch of tests broke in openSUSE at home; I regenerated the files, and the CI broke because of that - then it turned out that the fedora:latest CI image did not have the same freetype version.
- Such breakage happens often enough to be annoying - freetype, pixman, cairo, and pango have caused rendering differences in the past.
It would be very helpful to have a CI scheme with the following properties:
- Pinned versions of the rendering dependencies. Whether those are installed in the image through distro packages, or automated-by-hand from release tarballs in /usr/local or whatever, should hopefully be irrelevant other than in how the librsvg-oci-images are built up.
- Ideally, the image would be built on top of a smaller image, with a subset of the rendering dependencies, so that we can use that for Cairo's own CI (which breaks when pixman or freetype change, for instance).
- Be easy to run the tests locally for individual developers. Maybe I just need to make me some scripts to run the librsvg tests in the docker image? (Maybe we can provide such scripts in the git repo?)
- Extra jobs for Windows / mingw / MacOS / cross-compilation, which we lack.
Let's use this issue to brainstorm on how to improve the current CI setup.