[libvirt PATCH] ci: Run all jobs, for all branches, all the time

Andrea Bolognani posted 1 patch 1 week ago
Test syntax-check failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/20200626182040.929942-1-abologna@redhat.com
.gitlab-ci.yml | 143 ++++++++++++++++++-------------------------------
1 file changed, 53 insertions(+), 90 deletions(-)

[libvirt PATCH] ci: Run all jobs, for all branches, all the time

Posted by Andrea Bolognani 1 week ago
After recent changes (increasing the parallelism of the pipeline
by reducing the number of stages, introducing FreeBSD builds that
take longer than any other job), the difference between running
the full pipeline or a reduced one has basically disappeared: in
both cases, the completion time is around 25-35 minutes depending
on whether containers need to be rebuilt and how many shared
runners are available.

Reduce the complexity of our .gitlab-ci.yml and make things
simpler for contributors by simply always running all jobs.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
---
 .gitlab-ci.yml | 143 ++++++++++++++++++-------------------------------
 1 file changed, 53 insertions(+), 90 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6cb910b0fa..e6eb2f9905 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -15,8 +15,7 @@ stages:
 
 # Common templates
 
-# Containers that are necessary for the default pipeline
-.container_default_job_template: &container_default_job_definition
+.container_job_template: &container_job_definition
   image: docker:stable
   stage: containers
   services:
@@ -33,23 +32,15 @@ stages:
   after_script:
     - docker logout
 
-# Containers that are only needed for the full pipeline
-.container_extra_job_template: &container_extra_job_definition
-  <<: *container_default_job_definition
-  only:
-    - master
-    - /^ci-full-.*$/
-
 # We build many containers which can be useful to debug problems but are not
 # needed for the pipeline itself to complete: those sometimes fail, and when
 # that happens it's mostly because of temporary issues with Debian sid. We
 # don't want those failures to affect the overall pipeline status
 .container_optional_job_template: &container_optional_job_definition
-  <<: *container_extra_job_definition
+  <<: *container_job_definition
   allow_failure: true
 
-# Default native build jobs that are always run
-.native_build_default_job_template: &native_build_default_job_definition
+.native_build_job_template: &native_build_job_definition
   stage: builds
   image: $CI_REGISTRY_IMAGE/ci-$NAME:latest
   cache:
@@ -64,18 +55,10 @@ stages:
     - ../autogen.sh || (cat config.log && exit 1)
     - $MAKE distcheck
 
-# Extra native build jobs that are only run post-merge, or
-# when code is pushed to a branch with "ci-full-" name prefix
-.native_build_extra_job_template: &native_build_extra_job_definition
-  <<: *native_build_default_job_definition
-  only:
-    - master
-    - /^ci-full-.*$/
-
 # Jobs that we delegate to Cirrus CI because they require an operating
 # system other than Linux. These jobs will only run if the required
 # setup has been performed on the GitLab account (see ci/README.rst).
-.cirrus_build_default_job_template: &cirrus_build_default_job_definition
+.cirrus_build_job_template: &cirrus_build_job_definition
   stage: builds
   image: registry.gitlab.com/libvirt/libvirt-ci/cirrus-run:master
   script:
@@ -85,19 +68,7 @@ stages:
       - $CIRRUS_GITHUB_REPO
       - $CIRRUS_API_TOKEN
 
-.cirrus_build_extra_job_template: &cirrus_build_extra_job_definition
-  <<: *cirrus_build_default_job_definition
-  only:
-    variables:
-      - $CIRRUS_GITHUB_REPO
-      - $CIRRUS_API_TOKEN
-    refs:
-      - master
-      - /^ci-full-.*$/
-
-
-# Default cross build jobs that are always run
-.cross_build_default_job_template: &cross_build_default_job_definition
+.cross_build_default_job_template: &cross_build_job_definition
   stage: builds
   image: $CI_REGISTRY_IMAGE/ci-$NAME-cross-$CROSS:latest
   cache:
@@ -112,74 +83,66 @@ stages:
     - ../autogen.sh $CONFIGURE_OPTS || (cat config.log && exit 1)
     - $MAKE
 
-# Extra cross build jobs that are only run post-merge, or
-# when code is pushed to a branch with "ci-full-" name prefix
-.cross_build_extra_job_template: &cross_build_extra_job_definition
-  <<: *cross_build_default_job_definition
-  only:
-    - master
-    - /^ci-full-.*$/
-
 
 # Native container build jobs
 
 x64-centos-7-container:
-  <<: *container_default_job_definition
+  <<: *container_job_definition
   variables:
     NAME: centos-7
 
 x64-centos-8-container:
-  <<: *container_default_job_definition
+  <<: *container_job_definition
   variables:
     NAME: centos-8
 
 x64-centos-stream-container:
-  <<: *container_extra_job_definition
+  <<: *container_job_definition
   variables:
     NAME: centos-stream
 
 x64-debian-9-container:
-  <<: *container_extra_job_definition
+  <<: *container_job_definition
   variables:
     NAME: debian-9
 
 x64-debian-10-container:
-  <<: *container_default_job_definition
+  <<: *container_job_definition
   variables:
     NAME: debian-10
 
 x64-debian-sid-container:
-  <<: *container_extra_job_definition
+  <<: *container_job_definition
   variables:
     NAME: debian-sid
 
 x64-fedora-31-container:
-  <<: *container_extra_job_definition
+  <<: *container_job_definition
   variables:
     NAME: fedora-31
 
 x64-fedora-32-container:
-  <<: *container_default_job_definition
+  <<: *container_job_definition
   variables:
     NAME: fedora-32
 
 x64-fedora-rawhide-container:
-  <<: *container_default_job_definition
+  <<: *container_job_definition
   variables:
     NAME: fedora-rawhide
 
 x64-opensuse-151-container:
-  <<: *container_default_job_definition
+  <<: *container_job_definition
   variables:
     NAME: opensuse-151
 
 x64-ubuntu-1804-container:
-  <<: *container_extra_job_definition
+  <<: *container_job_definition
   variables:
     NAME: ubuntu-1804
 
 x64-ubuntu-2004-container:
-  <<: *container_default_job_definition
+  <<: *container_job_definition
   variables:
     NAME: ubuntu-2004
 
@@ -192,7 +155,7 @@ aarch64-debian-9-container:
     NAME: debian-9-cross-aarch64
 
 armv6l-debian-9-container:
-  <<: *container_extra_job_definition
+  <<: *container_job_definition
   variables:
     NAME: debian-9-cross-armv6l
 
@@ -202,12 +165,12 @@ armv7l-debian-9-container:
     NAME: debian-9-cross-armv7l
 
 mips-debian-9-container:
-  <<: *container_extra_job_definition
+  <<: *container_job_definition
   variables:
     NAME: debian-9-cross-mips
 
 mips64el-debian-9-container:
-  <<: *container_extra_job_definition
+  <<: *container_job_definition
   variables:
     NAME: debian-9-cross-mips64el
 
@@ -227,7 +190,7 @@ s390x-debian-9-container:
     NAME: debian-9-cross-s390x
 
 aarch64-debian-10-container:
-  <<: *container_extra_job_definition
+  <<: *container_job_definition
   variables:
     NAME: debian-10-cross-aarch64
 
@@ -257,7 +220,7 @@ mips64el-debian-10-container:
     NAME: debian-10-cross-mips64el
 
 mipsel-debian-10-container:
-  <<: *container_extra_job_definition
+  <<: *container_job_definition
   variables:
     NAME: debian-10-cross-mipsel
 
@@ -267,7 +230,7 @@ ppc64le-debian-10-container:
     NAME: debian-10-cross-ppc64le
 
 s390x-debian-10-container:
-  <<: *container_default_job_definition
+  <<: *container_job_definition
   variables:
     NAME: debian-10-cross-s390x
 
@@ -282,12 +245,12 @@ armv6l-debian-sid-container:
     NAME: debian-sid-cross-armv6l
 
 armv7-ldebian-sid-container:
-  <<: *container_default_job_definition
+  <<: *container_job_definition
   variables:
     NAME: debian-sid-cross-armv7l
 
 i686-debian-sid-container:
-  <<: *container_extra_job_definition
+  <<: *container_job_definition
   variables:
     NAME: debian-sid-cross-i686
 
@@ -302,7 +265,7 @@ mipsel-debian-sid-container:
     NAME: debian-sid-cross-mipsel
 
 ppc64le-debian-sid-container:
-  <<: *container_extra_job_definition
+  <<: *container_job_definition
   variables:
     NAME: debian-sid-cross-ppc64le
 
@@ -312,12 +275,12 @@ s390x-debian-sid-container:
     NAME: debian-sid-cross-s390x
 
 mingw32-fedora-rawhide-container:
-  <<: *container_default_job_definition
+  <<: *container_job_definition
   variables:
     NAME: fedora-rawhide-cross-mingw32
 
 mingw64-fedora-rawhide-container:
-  <<: *container_default_job_definition
+  <<: *container_job_definition
   variables:
     NAME: fedora-rawhide-cross-mingw64
 
@@ -325,72 +288,72 @@ mingw64-fedora-rawhide-container:
 # Native architecture build + test jobs
 
 x64-debian-9:
-  <<: *native_build_extra_job_definition
+  <<: *native_build_job_definition
   variables:
     NAME: debian-9
 
 x64-debian-10:
-  <<: *native_build_default_job_definition
+  <<: *native_build_job_definition
   variables:
     NAME: debian-10
 
 x64-debian-sid:
-  <<: *native_build_extra_job_definition
+  <<: *native_build_job_definition
   variables:
     NAME: debian-sid
 
 x64-centos-7:
-  <<: *native_build_default_job_definition
+  <<: *native_build_job_definition
   variables:
     NAME: centos-7
 
 x64-centos-8:
-  <<: *native_build_extra_job_definition
+  <<: *native_build_job_definition
   variables:
     NAME: centos-8
 
 x64-centos-stream:
-  <<: *native_build_extra_job_definition
+  <<: *native_build_job_definition
   variables:
     NAME: centos-stream
 
 x64-fedora-31:
-  <<: *native_build_extra_job_definition
+  <<: *native_build_job_definition
   variables:
     NAME: fedora-31
 
 x64-fedora-32:
-  <<: *native_build_default_job_definition
+  <<: *native_build_job_definition
   variables:
     NAME: fedora-32
 
 x64-fedora-rawhide:
-  <<: *native_build_default_job_definition
+  <<: *native_build_job_definition
   variables:
     NAME: fedora-rawhide
 
 x64-opensuse-151:
-  <<: *native_build_default_job_definition
+  <<: *native_build_job_definition
   variables:
     NAME: opensuse-151
 
 x64-ubuntu-1804:
-  <<: *native_build_extra_job_definition
+  <<: *native_build_job_definition
   variables:
     NAME: ubuntu-1804
 
 x64-ubuntu-2004:
-  <<: *native_build_default_job_definition
+  <<: *native_build_job_definition
   variables:
     NAME: ubuntu-2004
 
 x64-freebsd-12-build:
-  <<: *cirrus_build_default_job_definition
+  <<: *cirrus_build_job_definition
   variables:
     NAME: freebsd-12
 
 x64-macos-1015-build:
-  <<: *cirrus_build_default_job_definition
+  <<: *cirrus_build_job_definition
   variables:
     NAME: macos-1015
 
@@ -398,67 +361,67 @@ x64-macos-1015-build:
 # Cross compiled build jobs
 
 armv6l-debian-9:
-  <<: *cross_build_extra_job_definition
+  <<: *cross_build_job_definition
   variables:
     NAME: debian-9
     CROSS: armv6l
 
 mips64el-debian-9:
-  <<: *cross_build_extra_job_definition
+  <<: *cross_build_job_definition
   variables:
     NAME: debian-9
     CROSS: mips64el
 
 mips-debian-9:
-  <<: *cross_build_extra_job_definition
+  <<: *cross_build_job_definition
   variables:
     NAME: debian-9
     CROSS: mips
 
 aarch64-debian-10:
-  <<: *cross_build_extra_job_definition
+  <<: *cross_build_job_definition
   variables:
     NAME: debian-10
     CROSS: aarch64
 
 mipsel-debian-10:
-  <<: *cross_build_extra_job_definition
+  <<: *cross_build_job_definition
   variables:
     NAME: debian-10
     CROSS: mipsel
 
 s390x-debian-10:
-  <<: *cross_build_default_job_definition
+  <<: *cross_build_job_definition
   variables:
     NAME: debian-10
     CROSS: s390x
 
 armv7l-debian-sid:
-  <<: *cross_build_default_job_definition
+  <<: *cross_build_job_definition
   variables:
     NAME: debian-sid
     CROSS: armv7l
 
 i686-debian-sid:
-  <<: *cross_build_extra_job_definition
+  <<: *cross_build_job_definition
   variables:
     NAME: debian-sid
     CROSS: i686
 
 ppc64le-debian-sid:
-  <<: *cross_build_extra_job_definition
+  <<: *cross_build_job_definition
   variables:
     NAME: debian-sid
     CROSS: ppc64le
 
 mingw32-fedora-rawhide:
-  <<: *cross_build_default_job_definition
+  <<: *cross_build_job_definition
   variables:
     NAME: fedora-rawhide
     CROSS: mingw32
 
 mingw64-fedora-rawhide:
-  <<: *cross_build_default_job_definition
+  <<: *cross_build_job_definition
   variables:
     NAME: fedora-rawhide
     CROSS: mingw64
-- 
2.25.4

Re: [libvirt PATCH] ci: Run all jobs, for all branches, all the time

Posted by Daniel P. Berrangé 1 week ago
On Fri, Jun 26, 2020 at 08:20:40PM +0200, Andrea Bolognani wrote:
> After recent changes (increasing the parallelism of the pipeline
> by reducing the number of stages, introducing FreeBSD builds that
> take longer than any other job), the difference between running
> the full pipeline or a reduced one has basically disappeared: in
> both cases, the completion time is around 25-35 minutes depending
> on whether containers need to be rebuilt and how many shared
> runners are available.
> 
> Reduce the complexity of our .gitlab-ci.yml and make things
> simpler for contributors by simply always running all jobs.
> 
> Signed-off-by: Andrea Bolognani <abologna@redhat.com>
> ---
>  .gitlab-ci.yml | 143 ++++++++++++++++++-------------------------------
>  1 file changed, 53 insertions(+), 90 deletions(-)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Re: [libvirt PATCH] ci: Run all jobs, for all branches, all the time

Posted by Andrea Bolognani 1 week ago
On Mon, 2020-06-29 at 10:00 +0100, Daniel P. Berrangé wrote:
> On Fri, Jun 26, 2020 at 08:20:40PM +0200, Andrea Bolognani wrote:
> > After recent changes (increasing the parallelism of the pipeline
> > by reducing the number of stages, introducing FreeBSD builds that
> > take longer than any other job), the difference between running
> > the full pipeline or a reduced one has basically disappeared: in
> > both cases, the completion time is around 25-35 minutes depending
> > on whether containers need to be rebuilt and how many shared
> > runners are available.
> > 
> > Reduce the complexity of our .gitlab-ci.yml and make things
> > simpler for contributors by simply always running all jobs.
> > 
> > Signed-off-by: Andrea Bolognani <abologna@redhat.com>
> > ---
> >  .gitlab-ci.yml | 143 ++++++++++++++++++-------------------------------
> >  1 file changed, 53 insertions(+), 90 deletions(-)
> 
> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

Thanks! I'm going to assume this is safe for freeze and push in a
bit unless someone tells me otherwise :)

-- 
Andrea Bolognani / Red Hat / Virtualization