From 14cb84b74ff29dc39a5889d5fb174e6e2feac689 Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer@who-t.net>
Date: Wed, 11 Mar 2020 17:09:10 +1000
Subject: [PATCH] gitlab CI: enable tests on KVM

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
---
 .gitlab-ci.yml | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 56 insertions(+)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6e19e4c..db234e4 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,8 +1,62 @@
 # vim: set expandtab shiftwidth=2 tabstop=8 textwidth=0:
 
+.templates_sha: &templates_sha 2469555cd0a6b621b988e100ddd746c2ad0cdd1d
+
+include:
+  - project: 'freedesktop/ci-templates'
+    ref: *templates_sha
+    file: '/templates/fedora.yml'
+
+
 variables:
+  FDO_UPSTREAM_REPO: 'libevdev/python-libevdev'
   ARCH_PKGS: 'flake8'
 
+
+stages:
+  - prep
+  - test
+
+.distro-defaults:
+  variables:
+    FDO_DISTRIBUTION_VERSION: 31
+    FDO_DISTRIBUTION_TAG: 'qemu-2020-03-11.0'
+
+qemu-prep:
+  extends:
+  - .fdo.qemu-ifnot-exists@fedora
+  - .distro-defaults
+  stage: prep
+  variables:
+    FDO_DISTRIBUTION_PACKAGES: 'git python3 python3-pytest libevdev'
+    GIT_STRATEGY: none
+  allow_failure: true
+
+pytest:
+  extends:
+    - .fdo.distribution_image@fedora
+    - .distro-defaults
+  stage: test
+  needs:
+    - qemu-prep
+  script:
+    - /app/start_vm.sh
+    - "scp -P 5555 -r $PWD localhost:"
+    # We must not exit our script until VM cleanup is complete
+    - set +e
+    - ssh localhost -p 5555 "cd $CI_PROJECT_NAME ; pytest --junit-xml=results.xml" && touch .success
+    - scp -P 5555 -r localhost:$CI_PROJECT_NAME/results.xml .
+    - ssh localhost -p 5555 halt
+    - sleep 2
+    - pkill qemu
+    # re-enable failures to fail the job
+    - set -e
+    - test -e .success || exit 1
+  artifacts:
+    reports:
+      junit: results.xml
+
+
 .default_setup:
   image: archlinux/base
   before_script:
@@ -12,10 +66,12 @@ variables:
 
 flake:
   extends: .default_setup
+  stage: test
   script:
     - python3 setup.py flake8
 
 install:
   extends: .default_setup
+  stage: test
   script:
     - python3 setup.py install
-- 
GitLab