Ideally I’d like to see continuous integration that checks all versions and configurations on each commit. That however is not very realistic. There are a large number of platforms and configurations that need to be tested and building and testing from a clean OS state takes about 20 min CPU time. GitHub CI offers 2,000 min for free and above that the price seems to rise quickly. Doing nothing gets less and less acceptable though. Issues on some particular platform or configuration are not uncommon with releases
As a first step, I’d like to have Docker files for popular Linux distros, ideally with both the oldest supported version and the latest version. Having that is a great reference for required dependencies and possibly different flags build steps, etc. that are sometimes needed.
Now I’m not an experienced Docker developer and I think this can all be a lot smarter and with less code duplication. I have two requests for help
First of all, someone with CI and Docker experience should establish the right reusable structure for these docker files. Note that we also would like to test multiple configurations, such as building using
clang, PGO builds, single threaded build, etc. Preferably with as little as possible duplication of work
Ideally we would be able to do stuff like
- Test on a specific branch of the git repo
- Test a specific configuration on a specific platform
- Test a specific configuration on all platforms
- Test all configurations on a specific platform
- Test everything
Once the structure is fine, people can add configurations and distro versions.
Ideas and volunteers?