Decouple the CI from the scheduler (GitLab pipelines)
Hello,
A good CI has the implementation logic separate from the scheduler (Gitlab pipelines, Github Actions, Concourse, Jenkins..). Even if one doesn't see that around so much as forge providers want to tie you into their ecosystem. But I think Debian deserves better.
Benefits of separating the implementation logic from the scheduler are:
- Easily portable to other schedulers. Resilience for the Debian project.
- One can implement a local dev scheduler (in Bash, Makefile, scripts, whatever). This local scheduler simplifies developing the CI, as one can iterate on it locally, without having to run minimal changes on Gitlab. As the other schedulers, is just a finite state machine.
- The local dev scheduler becomes a de-facto standard for developers. Developers don't need to keep up with the latest qa tools (lintian, pkgtest, piuparts, etc), configure their hooks manually, etc. They can use the latest version of the CI to develop locally.
- The local dev scheduler finite state machine can be extended with states that are not immediately useful for Gitlab CI, such as writing patches, importing a new upstream version, updating to the new policy, etc.
- As usual, improvements to the pipeline are obtained for free by those making use of it. Without the need to configure hooks and get deep inside of the different moving parts (pbuilder, lintian, autopkgtest, piuparts)..