3-level CI build system for LALSuite
Thoughts on a 3-level CI build system for LALSuite:
- jobs that run on push events: aimed at developers, focus on basic build & code quality checks, minimise runtime/resource usage
- current
lintjobs (exceptlint:depends), documentation -
toplevelbuilds (excepttoplevel:pulsar) - a basic package-level build:
-
lal*:pkgjust runsmake distcheckthenmake installinto a local prefix, which is them passed on to dependent jobs as artifacts. - advantages over current Conda/Debian/RPM builds:
- use 3x fewer resources, given that push events are more frequent
- should run quicker without extra packaging tasks, minimising runtime/resource usage
- should be more resilient to intermittent failures (e.g. from package builders unable to connect to servers to download needed packages), can avoid using
retryso that build errors are found earlier - clearer output: the package builders output lots & lots of cruft, which can make it difficult to find the actual build error message in the job logs, whereas a simple
make distcheckbuild will be a lot clearer
-
- current
- jobs that run on merge request events: aimed at maintainers, perform comprehensive tests, automate as much as possible
- start with all jobs currently run as part of nightly build
- for package-level build, would run Conda/Debian/RPM builds instead of basic package-level build described above
- maybe make package-level builds as close to production package build process as possible, e.g. use Koji for RPM builds?
- possible new jobs:
- automatic ABI checking using https://github.com/lvc/abi-compliance-checker
- anything else?
- start with all jobs currently run as part of nightly build
- jobs that run on nightly schedule: deployment tasks
- should only run a strict subset of merge request jobs needed for deployment, e.g. wheels, documentation builds
- i.e. should not perform any new tests not part of merge request level
- other thoughts:
- if Conda/Debian/RPM package builds are very close to production package build processes, could these completely automate LALSuite package production?
- i.e. run package builds on release tag, deploy jobs then upload packages to where they need to be
- if Conda/Debian/RPM package builds are very close to production package build processes, could these completely automate LALSuite package production?