qemu-devel
[Top][All Lists]
Advanced

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

Re: [RFC PATCH] gitlab-ci.yml: Speed up CI by using "meson test --no-reb


From: Thomas Huth
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
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0

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 via email to

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