qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] gitlab-ci.yml: Use the whole tree as artifacts to speed up t


From: Daniel P . Berrangé
Subject: Re: [PATCH] gitlab-ci.yml: Use the whole tree as artifacts to speed up the CI
Date: Fri, 22 Jan 2021 10:18:33 +0000
User-agent: Mutt/1.14.6 (2020-07-11)

On Fri, Jan 22, 2021 at 11:07:22AM +0100, Thomas Huth wrote:
> Currently, our check-system-* jobs are recompiling the whole sources
> again. This happens due to the fact that the jobs are checking out
> the whole source tree and required submodules again, and only try
> to use the "build" directory with the binaries and object files
> as an artifact from the previous stage - which simply does not work
> anymore (with the current version of meson). Due to some changed
> time stamps, meson is always trying to rebuild the whole tree.

This used to work in the past didn't it ? Did something change in
meson to break this, or have we just not noticed before.

> So instead of trying to marry a freshly checked out source tree
> with the pre-built binaries in these jobs, let's simply pass the
> whole source including the submodules and the build tree as artifact
> to the test jobs. That way timestamps get preserved and there is
> no rebuild of the sources anymore. This saves ca. 15 - 20 minutes
> of precious CI cycles in each run.

I'm a little worried we might end up hitting the artifact size
limit which is supposedly 1GB on gitlab.com.  Im guessing this
must be measuring the compressed size though, as a src checkout
with build dir  and .git dir is already way over 1GB.

> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  This is how a job looked like before my patch, running for 42 minutes:
>  https://gitlab.com/huth/qemu/-/jobs/978432757
> 
>  And this is how it looks like afterwards - it just took 18 minutes:
>  https://gitlab.com/huth/qemu/-/jobs/979500316
> 
>  .gitlab-ci.d/containers.yml |  1 +
>  .gitlab-ci.yml              | 40 +++++++++++++++++++++++++------------
>  2 files changed, 28 insertions(+), 13 deletions(-)
> 
> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> index e2f9c99e27..d55280661f 100644
> --- a/.gitlab-ci.yml
> +++ b/.gitlab-ci.yml
> @@ -39,7 +39,6 @@ include:
>    image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
>    script:
>      - cd build
> -    - find . -type f -exec touch {} +
>      - make $MAKE_CHECK_ARGS
>  
>  .acceptance_template: &acceptance_definition
> @@ -83,8 +82,7 @@ build-system-alpine:
>    artifacts:
>      expire_in: 2 days
>      paths:
> -      - .git-submodule-status
> -      - build
> +      - "*"
>  
>  check-system-alpine:
>    <<: *native_test_job_definition
> @@ -92,6 +90,7 @@ check-system-alpine:
>      - job: build-system-alpine
>        artifacts: true
>    variables:
> +    GIT_CHECKOUT: "false"
>      IMAGE: alpine
>      MAKE_CHECK_ARGS: check
>  
> @@ -101,6 +100,7 @@ acceptance-system-alpine:
>      - job: build-system-alpine
>        artifacts: true
>    variables:
> +    GIT_CHECKOUT: "false"
>      IMAGE: alpine
>      MAKE_CHECK_ARGS: check-acceptance
>    <<: *acceptance_definition
> @@ -116,7 +116,7 @@ build-system-ubuntu:
>    artifacts:
>      expire_in: 2 days
>      paths:
> -      - build
> +      - "*"
>  
>  check-system-ubuntu:
>    <<: *native_test_job_definition
> @@ -124,6 +124,7 @@ check-system-ubuntu:
>      - job: build-system-ubuntu
>        artifacts: true
>    variables:
> +    GIT_CHECKOUT: "false"
>      IMAGE: ubuntu2004
>      MAKE_CHECK_ARGS: check
>  
> @@ -133,6 +134,7 @@ acceptance-system-ubuntu:
>      - job: build-system-ubuntu
>        artifacts: true
>    variables:
> +    GIT_CHECKOUT: "false"
>      IMAGE: ubuntu2004
>      MAKE_CHECK_ARGS: check-acceptance
>    <<: *acceptance_definition
> @@ -148,7 +150,7 @@ build-system-debian:
>    artifacts:
>      expire_in: 2 days
>      paths:
> -      - build
> +      - "*"
>  
>  check-system-debian:
>    <<: *native_test_job_definition
> @@ -156,6 +158,7 @@ check-system-debian:
>      - job: build-system-debian
>        artifacts: true
>    variables:
> +    GIT_CHECKOUT: "false"
>      IMAGE: debian-amd64
>      MAKE_CHECK_ARGS: check
>  
> @@ -170,7 +173,7 @@ build-tools-and-docs-debian:
>    artifacts:
>      expire_in: 2 days
>      paths:
> -      - build
> +      - "*"
>  
>  acceptance-system-debian:
>    <<: *native_test_job_definition
> @@ -178,6 +181,7 @@ acceptance-system-debian:
>      - job: build-system-debian
>        artifacts: true
>    variables:
> +    GIT_CHECKOUT: "false"
>      IMAGE: debian-amd64
>      MAKE_CHECK_ARGS: check-acceptance
>    <<: *acceptance_definition
> @@ -194,7 +198,7 @@ build-system-fedora:
>    artifacts:
>      expire_in: 2 days
>      paths:
> -      - build
> +      - "*"
>  
>  check-system-fedora:
>    <<: *native_test_job_definition
> @@ -202,6 +206,7 @@ check-system-fedora:
>      - job: build-system-fedora
>        artifacts: true
>    variables:
> +    GIT_CHECKOUT: "false"
>      IMAGE: fedora
>      MAKE_CHECK_ARGS: check
>  
> @@ -211,6 +216,7 @@ acceptance-system-fedora:
>      - job: build-system-fedora
>        artifacts: true
>    variables:
> +    GIT_CHECKOUT: "false"
>      IMAGE: fedora
>      MAKE_CHECK_ARGS: check-acceptance
>    <<: *acceptance_definition
> @@ -226,7 +232,7 @@ build-system-centos:
>    artifacts:
>      expire_in: 2 days
>      paths:
> -      - build
> +      - "*"
>  
>  check-system-centos:
>    <<: *native_test_job_definition
> @@ -234,6 +240,7 @@ check-system-centos:
>      - job: build-system-centos
>        artifacts: true
>    variables:
> +    GIT_CHECKOUT: "false"
>      IMAGE: centos8
>      MAKE_CHECK_ARGS: check
>  
> @@ -243,6 +250,7 @@ acceptance-system-centos:
>      - job: build-system-centos
>        artifacts: true
>    variables:
> +    GIT_CHECKOUT: "false"
>      IMAGE: centos8
>      MAKE_CHECK_ARGS: check-acceptance
>    <<: *acceptance_definition
> @@ -257,7 +265,7 @@ build-system-opensuse:
>    artifacts:
>      expire_in: 2 days
>      paths:
> -      - build
> +      - "*"
>  
>  check-system-opensuse:
>    <<: *native_test_job_definition
> @@ -265,6 +273,7 @@ check-system-opensuse:
>      - job: build-system-opensuse
>        artifacts: true
>    variables:
> +    GIT_CHECKOUT: "false"
>      IMAGE: opensuse-leap
>      MAKE_CHECK_ARGS: check
>  
> @@ -274,6 +283,7 @@ acceptance-system-opensuse:
>       - job: build-system-opensuse
>         artifacts: true
>     variables:
> +     GIT_CHECKOUT: "false"
>       IMAGE: opensuse-leap
>       MAKE_CHECK_ARGS: check-acceptance
>     <<: *acceptance_definition
> @@ -444,7 +454,7 @@ build-deprecated:
>    artifacts:
>      expire_in: 2 days
>      paths:
> -      - build
> +      - "*"
>  
>  # We split the check-tcg step as test failures are expected but we still
>  # want to catch the build breaking.
> @@ -454,6 +464,7 @@ check-deprecated:
>      - job: build-deprecated
>        artifacts: true
>    variables:
> +    GIT_CHECKOUT: "false"
>      IMAGE: debian-all-test-cross
>      MAKE_CHECK_ARGS: check-tcg
>    allow_failure: true
> @@ -526,7 +537,7 @@ build-crypto-old-nettle:
>      MAKE_CHECK_ARGS: check-build
>    artifacts:
>      paths:
> -      - build
> +      - "*"
>  
>  check-crypto-old-nettle:
>    <<: *native_test_job_definition
> @@ -534,6 +545,7 @@ check-crypto-old-nettle:
>      - job: build-crypto-old-nettle
>        artifacts: true
>    variables:
> +    GIT_CHECKOUT: "false"
>      IMAGE: centos7
>      MAKE_CHECK_ARGS: check
>  
> @@ -547,7 +559,7 @@ build-crypto-old-gcrypt:
>      MAKE_CHECK_ARGS: check-build
>    artifacts:
>      paths:
> -      - build
> +      - "*"
>  
>  check-crypto-old-gcrypt:
>    <<: *native_test_job_definition
> @@ -555,6 +567,7 @@ check-crypto-old-gcrypt:
>      - job: build-crypto-old-gcrypt
>        artifacts: true
>    variables:
> +    GIT_CHECKOUT: "false"
>      IMAGE: centos7
>      MAKE_CHECK_ARGS: check
>  
> @@ -568,7 +581,7 @@ build-crypto-only-gnutls:
>      MAKE_CHECK_ARGS: check-build
>    artifacts:
>      paths:
> -      - build
> +      - "*"
>  
>  check-crypto-only-gnutls:
>    <<: *native_test_job_definition
> @@ -576,6 +589,7 @@ check-crypto-only-gnutls:
>      - job: build-crypto-only-gnutls
>        artifacts: true
>    variables:
> +    GIT_CHECKOUT: "false"
>      IMAGE: centos7
>      MAKE_CHECK_ARGS: check
>  
> -- 
> 2.27.0
> 
> 

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 :|




reply via email to

[Prev in Thread] Current Thread [Next in Thread]