[mutter] ci: Run KVM tests



commit 5c5e30638db803203dca7ae7607a91d5151e0eb4
Author: Jonas Ã…dahl <jadahl gmail com>
Date:   Wed Feb 9 10:58:52 2022 +0100

    ci: Run KVM tests
    
    This commit makes the KVM tests run in special VM runners tagged with
    the 'kvm' tag. In order to avoid building the kernel image used for
    running the tests each pipeline, it's built as part of the CI image
    building.
    
    For now, KVM tests are only run on the x86_64 architecture. The reasons
    for this are two that the kernel image building script doesn't yet handle
    any other architecture than x86_64 due to differences in how the image
    is built and handled, as well as the fact that there only exists a kvm
    tagged runner for x86_64.
    
    Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2152>

 .gitlab-ci.yml | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 74 insertions(+), 12 deletions(-)
---
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ed8b5e1bb3..3a9b3441ea 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -17,7 +17,7 @@ variables:
 .mutter.fedora:35@common:
   variables:
     FDO_DISTRIBUTION_VERSION: 35
-    BASE_TAG: '2022-03-04.1'
+    BASE_TAG: '2022-03-05.0'
     FDO_DISTRIBUTION_PACKAGES:
       asciidoc
       clang
@@ -31,6 +31,8 @@ variables:
       xorg-x11-server-Xvfb
       mesa-dri-drivers
       xorg-x11-proto-devel
+      qemu-system-x86-core
+      busybox
 
     FDO_DISTRIBUTION_EXEC: |
       dnf install -y 'dnf-command(builddep)' &&
@@ -41,6 +43,7 @@ variables:
       dnf builddep -y libinput --setopt=install_weak_deps=False &&
       dnf builddep -y wayland --setopt=install_weak_deps=False &&
       dnf builddep -y wayland-protocols --setopt=install_weak_deps=False &&
+      dnf builddep -y kernel --setopt=install_weak_deps=False &&
 
       # For Xwayland
       dnf builddep -y xorg-x11-server-Xwayland --setopt=install_weak_deps=False &&
@@ -86,7 +89,21 @@ variables:
                       mutter mutter-devel \
                       gnome-shell &&
 
-      dnf clean all
+      dnf clean all &&
+
+      if [[ x"$(uname -m )" = "xx86_64" ]] ; then
+        meson build -Dkvm_tests=true &&
+        ninja -C build src/tests/kvm/bzImage &&
+        mkdir -p /opt/mutter &&
+        cp build/src/tests/kvm/bzImage /opt/mutter/bzImage &&
+
+        git clone https://github.com/jadahl/virtme.git &&
+        cd virtme &&
+        git checkout e7ee481efa10098ed0d62c9e033d61b2379b9b95 &&
+        ./setup.py install --prefix=/usr &&
+        cd .. &&
+        rm -rf virtme
+      fi
 
 default:
   # Cancel jobs if newer commits are pushed to the branch
@@ -209,9 +226,16 @@ check-code-style:
       fi
   allow_failure: true
 
+.build-mutter-base:
+  variables:
+    BASE_MESON_OPTIONS:
+      -Degl_device=true
+      -Dwayland_eglstream=true
+
 .build-mutter:
   extends:
     - .fdo.distribution-image@fedora
+    - .build-mutter-base
   stage: build
   script:
     - meson . build
@@ -221,8 +245,8 @@ check-code-style:
         --warnlevel 2
         -Dbuildtype=debugoptimized
         -Db_coverage=true
-        -Degl_device=true
-        -Dwayland_eglstream=true
+        $BASE_MESON_OPTIONS
+        $EXTRA_MESON_OPTIONS
     - meson compile -C build
     - meson install -C build
   artifacts:
@@ -231,6 +255,10 @@ check-code-style:
       - build
 
 build-mutter@x86_64:
+  variables:
+    EXTRA_MESON_OPTIONS:
+      -Dkvm_tests=true
+      -Dkvm_kernel_image=/opt/mutter/bzImage
   extends:
     - .build-mutter
     - .mutter.fedora:35@x86_64
@@ -297,19 +325,15 @@ build-without-native-backend-and-wayland@x86_64:
     MALLOC_CHECK_: "3"
     NO_AT_BRIDGE: "1"
   before_script:
-    - glib-compile-schemas $GSETTINGS_SCHEMA_DIR
     # Disable e.g. audio support to not dead lock screen cast tests
     - mkdir -m 700 $XDG_RUNTIME_DIR
     - pipewire & sleep 2
 
-.test-mutter:
+.test-mutter-base:
   extends:
     - .fdo.distribution-image@fedora
   <<: *test-setup
   stage: test
-  script:
-    - dbus-run-session -- xvfb-run -a -s "$XVFB_SERVER_ARGS"
-        ./.gitlab-ci/run-meson.sh test -C build --no-rebuild -t 10
   after_script:
     - pushd build
     - gcovr --root=..
@@ -319,14 +343,27 @@ build-without-native-backend-and-wayland@x86_64:
     - popd
   artifacts:
     expire_in: 1 day
-    reports:
-      junit: "build/meson-logs/testlog.junit.xml"
     name: "mutter-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
     when: always
     paths:
       - build
       - coverage-*.json
 
+.test-mutter:
+  extends:
+    - .fdo.distribution-image@fedora
+    - .test-mutter-base
+  script:
+    - glib-compile-schemas $GSETTINGS_SCHEMA_DIR
+    - dbus-run-session -- xvfb-run -a -s "$XVFB_SERVER_ARGS"
+        ./.gitlab-ci/run-meson.sh test -C build
+          --no-suite 'mutter/kvm'
+          --no-rebuild
+          --timeout-multiplier 10
+  artifacts:
+    reports:
+      junit: "build/meson-logs/testlog.junit.xml"
+
 test-mutter@x86_64:
   extends:
     - .test-mutter
@@ -334,6 +371,24 @@ test-mutter@x86_64:
   needs:
     - build-mutter@x86_64
 
+test-mutter-kvm@x86_64:
+  extends:
+    - .test-mutter-base
+    - .mutter.fedora:35@x86_64
+  tags:
+    - kvm
+  script:
+      meson test -C build
+        --no-rebuild
+        --timeout-multiplier 10
+        --setup plain
+        --suite 'mutter/kvm'
+  needs:
+    - build-mutter@x86_64
+  artifacts:
+    reports:
+      junit: "build/meson-logs/testlog-plain.junit.xml"
+
 test-mutter@aarch64:
   extends:
     - .test-mutter
@@ -357,6 +412,7 @@ coverage:
   needs:
     - test-mutter@x86_64
     - test-mutter@aarch64
+    - test-mutter-kvm@x86_64
 
 can-build-gnome-shell@x86_64:
   extends:
@@ -402,11 +458,17 @@ dist-mutter:
   extends:
     - .fdo.distribution-image@fedora
     - .mutter.fedora:35@x86_64
+    - .build-mutter-base
   <<: *test-setup
   stage: deploy
   needs:
-    - build-mutter@x86_64
+    - build-fedora-container@x86_64
   script:
+    - meson . build --werror --prefix /usr
+        -Dbuildtype=debugoptimized
+        $BASE_MESON_OPTIONS
+        -Dkvm_tests=false
+    - glib-compile-schemas $GSETTINGS_SCHEMA_DIR
     - dbus-run-session -- xvfb-run -a -s "$XVFB_SERVER_ARGS"
         ./.gitlab-ci/run-meson.sh dist -C build
   rules:


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