]> git.ipfire.org Git - thirdparty/libvirt.git/commit
ci: Reduce number of stages
authorAndrea Bolognani <abologna@redhat.com>
Wed, 10 Jun 2020 10:11:30 +0000 (12:11 +0200)
committerAndrea Bolognani <abologna@redhat.com>
Wed, 10 Jun 2020 17:33:09 +0000 (19:33 +0200)
commit0d009ca646a4e7438952f6d2739ab7f48ef533ab
tree7305c37b0a12699112ffa0b576cd11a3dbfa3e67
parent2072c395419be1986be045c1bd1ab1c800a674bf
ci: Reduce number of stages

Right now we're dividing the jobs into three stages: prebuild, which
includes DCO checking as well as building artifacts such as the
website, and native_build/cross_build, which do exactly what you'd
expect based on their names.

This organization is nice from the logical point of view, but results
in poor utilization of the available CI resources: in particular, the
fact that cross_build jobs can only start after all native_build jobs
have finished means that if even a single one of the latter takes a
bit longer the pipeline will stall, and with native builds taking
anywhere from less than 10 minutes to more than 20, this happens all
the time.

Building artifacts in a separate pipeline stage also doesn't have any
advantages, and only delays further stages by a couple of minutes.
The only job that really makes sense in its own stage is the DCO
check, because it's extremely fast (less than 1 minute) and, if that
fails, we can avoid kicking off all other jobs.

Reducing the number of stages results in significant speedups:
specifically, going from three stages to two stages reduces the
overall completion time for a full CI pipeline from ~45 minutes[1]
to ~30 minutes[2].

[1] https://gitlab.com/abologna/libvirt/-/pipelines/154751893
[2] https://gitlab.com/abologna/libvirt/-/pipelines/154771173

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
.gitlab-ci.yml