Currently we build on three linux operating system levels in CI in order to maximize language coverage. We also build against a very old Visual Studio (2010). The project has expended considerable energy attempting to maintain a wide swath of language level coverage stretching back 5 or more years. This has become prohibitively expensive to maintain and must change.
The proposed new CI operating system coverage rules for the project are:
- We will run all build jobs on the latest stable Ubuntu operating system, currently Ubuntu Artful (17.10).
- Where a linux distribution fails to keep reasonably current with a language we will upgrade it to something more reasonable. (Example: Ubuntu Xenial uses node.js 4.x which is EOL RTS in April 2018, so we install 6.x).
- We will additionally run "make check" on the LTS release before the latest stable Ubuntu using all stock provided languages, where supported.
Each build job takes about 20 minutes and there is no parallelization, so we are only going to build 3 jobs:
- We will "make check" on the current Visual Studio release, MSVC2017.
- We will build one 32-bit cygwin and one 64-bit MinGW job.
This will yield the following changes:
- We will drop the Ubuntu Trusty docker environment and build job.
- We will have one "make check" on Ubuntu Xenial (16.04 LTS).
- The remainder of jobs will use Ubuntu Artful (17.10), until Bionic (18.04 LTS) comes out.
- We will shift from Visual Studio 2010 and 2015 builds to 2017 builds.
- We will add a cygwin 32-bit build and keep the 64-bit MinGW build.
Total build time should be 1 hour or less - we'll see how close we get to that goal.