mirror of
https://gitlab.freedesktop.org/libevdev/libevdev.git
synced 2025-12-20 08:00:09 +01:00
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>
This commit is contained in:
parent
f795694b2e
commit
ada38025a2
3 changed files with 224 additions and 12 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
{% for distro in distributions %}
|
||||
|
||||
### {{ distro.name }} {{ distro.version }}
|
||||
|
|
@ -427,11 +445,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
|
||||
|
|
@ -446,6 +459,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
|
||||
|
|
|
|||
44
.gitlab-ci/meson-build.sh
Executable file
44
.gitlab-ci/meson-build.sh
Executable file
|
|
@ -0,0 +1,44 @@
|
|||
#!/bin/bash
|
||||
|
||||
if [[ -f .meson_environment ]]; then
|
||||
. .meson_environment
|
||||
fi
|
||||
|
||||
if [[ -z "$MESON_BUILDDIR" ]]; then
|
||||
echo "\$MESON_BUILDDIR undefined."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# emulate a few gitlab variables to make it easier to
|
||||
# run and debug locally.
|
||||
if [[ -z "$CI_JOB_ID" ]] || [[ -z "$CI_JOB_NAME" ]]; then
|
||||
echo "Missing \$CI_JOB_ID or \$CI_JOB_NAME".
|
||||
CI_JOB_ID=$(date +%s)
|
||||
CI_JOB_NAME='libevdev-job-local'
|
||||
echo "Simulating gitlab environment: "
|
||||
echo " CI_JOB_ID=$CI_JOB_ID"
|
||||
echo " CI_JOB_NAME=$CI_JOB_NAME"
|
||||
fi
|
||||
|
||||
|
||||
echo "*************************************************"
|
||||
echo "builddir: $MESON_BUILDDIR"
|
||||
echo "meson args: $MESON_ARGS"
|
||||
echo "ninja args: $NINJA_ARGS"
|
||||
echo "meson test args: $MESON_TEST_ARGS"
|
||||
echo "*************************************************"
|
||||
|
||||
set -e
|
||||
|
||||
rm -rf "$MESON_BUILDDIR"
|
||||
meson "$MESON_BUILDDIR" $MESON_ARGS
|
||||
meson configure "$MESON_BUILDDIR"
|
||||
ninja -C "$MESON_BUILDDIR" $NINJA_ARGS
|
||||
|
||||
# we still want to generate the reports, even if meson test fails
|
||||
set +e
|
||||
meson test -C "$MESON_BUILDDIR" $MESON_TEST_ARGS --print-errorlogs
|
||||
exit_code=$?
|
||||
set -e
|
||||
|
||||
exit $exit_code
|
||||
Loading…
Add table
Reference in a new issue