qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Thomas Huth <thuth@redhat.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: "Daniel P . Berrangé" <berrange@redhat.com>,
	"Philippe Mathieu-Daudé" <philmd@redhat.com>,
	qemu-devel <qemu-devel@nongnu.org>,
	"Wainer dos Santos Moschetta" <wainersm@redhat.com>
Subject: Re: [RFC PATCH] gitlab-ci.yml: Speed up CI by using "meson test --no-rebuild"
Date: Mon, 25 Jan 2021 10:09:11 +0100	[thread overview]
Message-ID: <52506627-8150-bc83-2ac0-c0c8927126f9@redhat.com> (raw)
In-Reply-To: <CABgObfbxY_ETKF6V9QYh2rQeF0fRD5EVWjJtnyyexc2qe5CMgQ@mail.gmail.com>

On 24/01/2021 12.32, Paolo Bonzini wrote:
> check-block is not run by "meson test".

Thanks! I've just send a v1 now which also runs the iotests again.

  Thomas


> 
> Il dom 24 gen 2021, 08:58 Thomas Huth <thuth@redhat.com 
> <mailto:thuth@redhat.com>> ha scritto:
> 
>     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.
> 
>     To fix this problem, use "meson test --no-rebuild" instead of
>     "make check" to avoid rebuilding all binaries every time. This
>     saves ca. 15 - 20 minutes of precious CI cycles in each run.
> 
>     Signed-off-by: Thomas Huth <thuth@redhat.com <mailto:thuth@redhat.com>>
>     ---
>       Marked as "RFC" since I'm not quite sure whether "meson test" has
>       the same test coverage as "make check"... Paolo?
> 
>       .gitlab-ci.yml | 41 ++++++++++++++++++++++-------------------
>       1 file changed, 22 insertions(+), 19 deletions(-)
> 
>     diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
>     index de3a3d25b5..c9fb11c325 100644
>     --- a/.gitlab-ci.yml
>     +++ b/.gitlab-ci.yml
>     @@ -34,6 +34,19 @@ include:
>               make -j"$JOBS" $MAKE_CHECK_ARGS ;
>             fi
> 
>     +.native_meson_test_job:
>     +  stage: test
>     +  image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
>     +  script:
>     +    - cd build
>     +    - touch *
>     +    - make git-submodule-update
>     +    - if [ -x ../meson/meson.py ]; then
>     +          ../meson/meson.py test --no-rebuild -t 5 $MESON_TEST_ARGS ;
>     +      else
>     +          meson test --no-rebuild -t 5 $MESON_TEST_ARGS ;
>     +      fi
>     +
>       .native_test_job_template: &native_test_job_definition
>         stage: test
>         image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
>     @@ -83,17 +96,15 @@ build-system-alpine:
>         artifacts:
>           expire_in: 2 days
>           paths:
>     -      - .git-submodule-status
>             - build
> 
>       check-system-alpine:
>     -  <<: *native_test_job_definition
>     +  extends: .native_meson_test_job
>         needs:
>           - job: build-system-alpine
>             artifacts: true
>         variables:
>           IMAGE: alpine
>     -    MAKE_CHECK_ARGS: check
> 
>       acceptance-system-alpine:
>         <<: *native_test_job_definition
>     @@ -118,13 +129,12 @@ build-system-ubuntu:
>             - build
> 
>       check-system-ubuntu:
>     -  <<: *native_test_job_definition
>     +  extends: .native_meson_test_job
>         needs:
>           - job: build-system-ubuntu
>             artifacts: true
>         variables:
>           IMAGE: ubuntu2004
>     -    MAKE_CHECK_ARGS: check
> 
>       acceptance-system-ubuntu:
>         <<: *native_test_job_definition
>     @@ -149,13 +159,12 @@ build-system-debian:
>             - build
> 
>       check-system-debian:
>     -  <<: *native_test_job_definition
>     +  extends: .native_meson_test_job
>         needs:
>           - job: build-system-debian
>             artifacts: true
>         variables:
>           IMAGE: debian-amd64
>     -    MAKE_CHECK_ARGS: check
> 
>       # No targets are built here, just tools, docs, and unit tests. This
>       # also feeds into the eventual documentation deployment steps later
>     @@ -194,13 +203,12 @@ build-system-fedora:
>             - build
> 
>       check-system-fedora:
>     -  <<: *native_test_job_definition
>     +  extends: .native_meson_test_job
>         needs:
>           - job: build-system-fedora
>             artifacts: true
>         variables:
>           IMAGE: fedora
>     -    MAKE_CHECK_ARGS: check
> 
>       acceptance-system-fedora:
>         <<: *native_test_job_definition
>     @@ -226,13 +234,12 @@ build-system-centos:
>             - build
> 
>       check-system-centos:
>     -  <<: *native_test_job_definition
>     +  extends: .native_meson_test_job
>         needs:
>           - job: build-system-centos
>             artifacts: true
>         variables:
>           IMAGE: centos8
>     -    MAKE_CHECK_ARGS: check
> 
>       acceptance-system-centos:
>         <<: *native_test_job_definition
>     @@ -256,13 +263,12 @@ build-system-opensuse:
>             - build
> 
>       check-system-opensuse:
>     -  <<: *native_test_job_definition
>     +  extends: .native_meson_test_job
>         needs:
>           - job: build-system-opensuse
>             artifacts: true
>         variables:
>           IMAGE: opensuse-leap
>     -    MAKE_CHECK_ARGS: check
> 
>       acceptance-system-opensuse:
>          <<: *native_test_job_definition
>     @@ -525,13 +531,12 @@ build-crypto-old-nettle:
>             - build
> 
>       check-crypto-old-nettle:
>     -  <<: *native_test_job_definition
>     +  extends: .native_meson_test_job
>         needs:
>           - job: build-crypto-old-nettle
>             artifacts: true
>         variables:
>           IMAGE: centos7
>     -    MAKE_CHECK_ARGS: check
> 
> 
>       build-crypto-old-gcrypt:
>     @@ -546,13 +551,12 @@ build-crypto-old-gcrypt:
>             - build
> 
>       check-crypto-old-gcrypt:
>     -  <<: *native_test_job_definition
>     +  extends: .native_meson_test_job
>         needs:
>           - job: build-crypto-old-gcrypt
>             artifacts: true
>         variables:
>           IMAGE: centos7
>     -    MAKE_CHECK_ARGS: check
> 
> 
>       build-crypto-only-gnutls:
>     @@ -567,13 +571,12 @@ build-crypto-only-gnutls:
>             - build
> 
>       check-crypto-only-gnutls:
>     -  <<: *native_test_job_definition
>     +  extends: .native_meson_test_job
>         needs:
>           - job: build-crypto-only-gnutls
>             artifacts: true
>         variables:
>           IMAGE: centos7
>     -    MAKE_CHECK_ARGS: check
> 
>       # We don't need to exercise every backend with every front-end
>       build-trace-multi-user:
>     -- 
>     2.27.0
> 



      reply	other threads:[~2021-01-25  9:10 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-24  7:58 [RFC PATCH] gitlab-ci.yml: Speed up CI by using "meson test --no-rebuild" Thomas Huth
2021-01-24 11:32 ` Paolo Bonzini
2021-01-25  9:09   ` Thomas Huth [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52506627-8150-bc83-2ac0-c0c8927126f9@redhat.com \
    --to=thuth@redhat.com \
    --cc=berrange@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=philmd@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=wainersm@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).