summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2020-02-18 20:22:12 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2020-02-19 08:49:02 +1000
commitada38025a2cb2294ef542bce3968af3021919a0e (patch)
tree18ea02dadca94b2a89caef70d47b1a64ed18ce5e /.gitlab-ci.yml
parentf795694b2ea32ec8694e46942b37d6d88887f2ef (diff)
downloadlibevdev-ada38025a2cb2294ef542bce3968af3021919a0e.tar.gz
gitlab CI: hook up qemu
This is mostly copied from libinput's qemu setup with a few minor renames. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to '.gitlab-ci.yml')
-rw-r--r--.gitlab-ci.yml96
1 files changed, 90 insertions, 6 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 9857570..81d072b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -2,7 +2,7 @@
#
# THIS FILE IS GENERATED, DO NOT EDIT
-.templates_sha: &template_sha 01f2a6a8ab5cd31000c1c14a1acfff68ea98b59e # see https://docs.gitlab.com/ee/ci/yaml/#includefile
+.templates_sha: &template_sha b7030c2cd0d6ccc5f6d4f8299bafa4daa9240d71 # see https://docs.gitlab.com/ee/ci/yaml/#includefile
include:
# Alpine container builder template
@@ -63,6 +63,7 @@ variables:
UBUNTU_TAG: '2020-02-17.1'
ARCH_TAG: '2020-02-17.1'
ALPINE_TAG: '2020-02-17.1'
+ QEMU_TAG: 'qemu-2020-02-18.0'
UPSTREAM_REPO: libevdev/libevdev
BUILDAH_IMAGE: $CI_REGISTRY/wayland/ci-templates/buildah:latest
@@ -72,6 +73,7 @@ variables:
DEBIAN_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_TAG
ARCH_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/archlinux/rolling:$ARCH_TAG
ALPINE_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/alpine/latest:$ALPINE_TAG
+ QEMU_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/fedora/$FEDORA_VERSION:$QEMU_TAG
LIBEVDEV_SKIP_ROOT_TESTS: 1
GIT_DEPTH: 1
@@ -172,6 +174,22 @@ check-commit:
skopeo inspect docker://$CI_REGISTRY_IMAGE/$IMAGE > /dev/null && exit 0 || true ;
fi
+fedora:31@qemu-prep:
+ extends:
+ - .fedora@qemu-build
+ - .pull_upstream_or_rebuild
+ stage: prep
+ tags:
+ - kvm
+ variables:
+ GIT_STRATEGY: none
+ FEDORA_VERSION: 31
+ FEDORA_TAG: $QEMU_TAG
+ DISTRIB_FLAVOR: fedora
+ DISTRIB_VERSION: $FEDORA_VERSION
+ TAG: $QEMU_TAG
+ allow_failure: true
+
### fedora 30
fedora:30@container-prep:
@@ -755,11 +773,6 @@ enable-gcov:meson:
variables:
MESON_ARGS: '-Dcoverity=true'
-valgrind:meson:
- extends: .fedora-custom-build@meson-template
- variables:
- MESON_TEST_ARGS: '--setup=valgrind'
-
soname:
stage: build
image: $FEDORA_CONTAINER_IMAGE
@@ -774,6 +787,77 @@ soname:
FEDORA_VERSION: 31
needs: ['fedora:31@container-prep']
+#################################################################
+# #
+# VM stage #
+# #
+#################################################################
+
+.check_tainted: &check_tainted |
+ # make sure the kernel is not tainted
+ if [[ "$(ssh localhost -p 5555 cat /proc/sys/kernel/tainted)" -gt 0 ]];
+ then
+ echo tainted kernel ;
+ exit 1 ;
+ fi
+
+.qemu@fedora:31:
+ stage: VM
+ image: $QEMU_CONTAINER_IMAGE
+ tags:
+ - kvm
+ variables:
+ FEDORA_VERSION: 31
+ MESON_BUILDDIR: build_dir
+ script:
+ # start our vm, no args required
+ - /app/start_vm.sh
+
+ - *check_tainted
+
+ - "scp -P 5555 -r $PWD localhost:"
+ - echo "CI_JOB_ID=\"$CI_JOB_ID\"" > sshenv
+ - echo "CI_JOB_NAME=\"$CI_JOB_NAME\"" >> sshenv
+ - echo "MESON_BUILDDIR=\"$MESON_BUILDDIR\"" >> sshenv
+ - echo "MESON_TEST_ARGS=\"$MESON_TEST_ARGS\"" >> sshenv
+ - echo "NINJA_ARGS=\"$NINJA_ARGS\"" >> sshenv
+ - "scp -P 5555 sshenv localhost:~/$CI_PROJECT_NAME/.meson_environment"
+ - ssh localhost -p 5555 "cd $CI_PROJECT_NAME ; .gitlab-ci/meson-build.sh" && touch .success || true
+ # no matter the results of the tests, we want to fetch the logs
+ - scp -P 5555 -r localhost:$CI_PROJECT_NAME/"$MESON_BUILDDIR" .
+
+ - *check_tainted
+
+ - ssh localhost -p 5555 halt || true
+ - sleep 2
+ - pkill qemu || true
+
+ - if [[ ! -e .success ]] ;
+ then
+ exit 1 ;
+ fi
+ artifacts:
+ name: "qemu-meson-logs-$CI_JOB_NAME"
+ when: always
+ expire_in: 1 week
+ paths:
+ - $MESON_BUILDDIR/meson-logs
+ - console.out
+
+ allow_failure: true
+ retry:
+ max: 2
+ when: script_failure
+ needs: ['fedora:31@qemu-prep']
+
+qemu:meson:
+ extends: .qemu@fedora:31
+
+qemu:meson:valgrind:
+ extends: .qemu@fedora:31
+ variables:
+ MESON_TEST_ARGS: '--setup=valgrind'
+
meson-from-tarball:
stage: tarballs
image: $FEDORA_CONTAINER_IMAGE