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>
27 jobs for master in 60 minutes and 2 seconds (queued for 1 second)
Status Name Job ID Coverage
  Builds
passed aarch64-debian-10 #589985585

00:06:35

passed armv6l-debian-9 #589985582

00:09:10

passed armv7l-debian-sid #589985588

00:07:16

passed codestyle #589985595

00:02:39

passed i686-debian-sid #589985589

00:06:21

passed mingw32-fedora-rawhide #589985591

00:06:52

passed mingw64-fedora-rawhide #589985592

00:06:55

passed mips-debian-9 #589985584

00:09:34

passed mips64el-debian-9 #589985583

00:09:52

passed mipsel-debian-sid #589985590

00:07:04

passed potfile #589985598

00:02:03

passed ppc64le-debian-10 #589985586

00:07:00

passed s390x-debian-10 #589985587

00:06:24

passed website #589985593

00:02:22

passed x64-centos-7 #589985569

00:07:38

passed x64-centos-8 #589985570

00:14:48

passed x64-debian-10 #589985567

00:11:00

passed x64-debian-9 #589985565

00:12:58

passed x64-debian-sid #589985568

00:10:23

passed x64-fedora-31 #589985571

00:13:49

passed x64-fedora-32 #589985573

00:13:47

passed x64-fedora-rawhide #589985574

00:14:40

failed x64-freebsd-12-build #589985579

01:00:00

failed x64-macos-1015-build #589985581

01:00:00

passed x64-opensuse-151 #589985576

00:14:19

passed x64-ubuntu-1804 #589985577

00:14:22

passed x64-ubuntu-2004 #589985578

00:11:04

 
Name Stage Failure
failed
x64-freebsd-12-build Builds The script exceeded the maximum execution time set for the job
............................................................
............................................................
.....................
Running after_script
WARNING: Failed to inspect build container baccb07e0e2c7fc9cebc23e6d14cf20b2df01bfc0d8a57fbdc2039f1f38df1a0 context deadline exceeded (docker_command.go:78:0s)
Authenticating with credentials from job payload (GitLab Registry)
Pulling docker image registry.gitlab.com/libvirt/libvirt-ci/cirrus-run:master ...
Uploading artifacts for failed job
Pulling docker image gitlab/gitlab-runner-helper:x86_64-c127439c ...
ERROR: Job failed: execution took longer than 1h0m0s seconds
failed
x64-macos-1015-build Builds The script exceeded the maximum execution time set for the job
............................................................
............................................................
......................
Running after_script
WARNING: Failed to inspect build container 0e6eb910c70ce99e9cef5ae50fa1d74cbe6e6d333a5e83c2d0b7662428be185e context deadline exceeded (docker_command.go:78:0s)
Authenticating with credentials from job payload (GitLab Registry)
Pulling docker image registry.gitlab.com/libvirt/libvirt-ci/cirrus-run:master ...
Uploading artifacts for failed job
Pulling docker image gitlab/gitlab-runner-helper:x86_64-c127439c ...
ERROR: Job failed: execution took longer than 1h0m0s seconds