question for all ci users: can we create jobs on demand (in non-merge, non-scheduled pipelines)?
The admins have requested that we do not create a pipeline with almost 500 jobs on every push, as this is creating a ton of database objects when most of them are never used.
One solution suggested would be for pipelines to contain a single job, which the ci_run_n_monitor
script can execute (technically cancel & re-create) with some variables set to configure which jobs the user wants to create & run, and that job would output a new pipeline that would contain these jobs.
(This probably requires !27443 so that we can refer to the jobs we want in a consistent way)
This would further entrench the fact that the CI cannot be used via the web interface, as the jobs would not even exist anymore. There were objections in the past to making the CI need our script to be usable, and this proposal makes this worse, so before taking on the work of rewriting the entire CI, it would be good to know if these past objections have subsided (eg. people got used to using the script, or people were worried about a use-case that didn't end up being a problem, etc.).
(merge pipelines and scheduled pipelines are non-interactive so they would continue to auto-create the same jobs as we have now, and are not affected by this proposal)
Side-note, but if we do this re-write, we can also have much smarter rules for which file change should trigger which test job, using the meson dependencies directly instead of approximately rewriting them in gitlab yaml; we could also create the "container" image jobs only when the image tag was bumped, and simplify the job inheritance tree by declaring it in eg. python instead of yaml, to support whatever kind of merging we decide, instead of just "replace", and disabling farms can be simplified too and made independent of a rebase on top of the "enable/disable" commit.