libevdev/.gitlab-ci.yml
Peter Hutterer ada38025a2 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>
2020-02-19 08:49:02 +10:00

905 lines
No EOL
25 KiB
YAML

# vim: set expandtab shiftwidth=2 tabstop=8 textwidth=0:
#
# THIS FILE IS GENERATED, DO NOT EDIT
.templates_sha: &template_sha b7030c2cd0d6ccc5f6d4f8299bafa4daa9240d71 # see https://docs.gitlab.com/ee/ci/yaml/#includefile
include:
# Alpine container builder template
- project: 'wayland/ci-templates'
file: '/templates/alpine.yml'
# Arch container builder template
- project: 'wayland/ci-templates'
ref: *template_sha
file: '/templates/arch.yml'
# Fedora container builder template
- project: 'wayland/ci-templates'
ref: *template_sha
file: '/templates/fedora.yml'
# Ubuntu container builder template
- project: 'wayland/ci-templates'
ref: *template_sha
file: '/templates/ubuntu.yml'
# Debian container builder template
- project: 'wayland/ci-templates'
ref: *template_sha
file: '/templates/debian.yml'
# CentOS container builder template
- project: 'wayland/ci-templates'
ref: *template_sha
file: '/templates/centos.yml'
stages:
- prep # rebuild the container images if there is a change
- build # for actually building and testing things in a container
- VM # for running the test suite in a VM
- autotools # distribution builds with autotools
- meson # distribution builds with meson
- tarballs # tarball builds
- container_clean # clean up unused container images
variables:
###############################################################################
# This is the list of packages required to build libevdev with the default #
# configuration. #
# #
# Run dnf install/apt-get install/.. with the list of packages for your #
# distribution #
###############################################################################
FEDORA_RPMS: 'git gcc gcc-c++ meson automake autoconf libtool make pkgconfig python3 check-devel valgrind binutils doxygen xz'
CENTOS_RPMS: 'git gcc gcc-c++ automake autoconf libtool make pkgconfig python3 check-devel valgrind binutils xz'
UBUNTU_DEBS: 'git gcc g++ meson automake autoconf libtool make pkg-config python3 check valgrind binutils doxygen xz-utils'
DEBIAN_DEBS: $UBUNTU_DEBS
ARCH_PKGS: 'git gcc meson automake autoconf libtool make pkgconfig python3 check valgrind binutils doxygen'
ALPINE_PKGS: 'git gcc g++ meson automake autoconf libtool make pkgconfig python3 check-dev valgrind binutils doxygen xz linux-headers'
############################ end of package lists #############################
# these tags should be updated each time the list of packages is updated
# changing these will force rebuilding the associated image
# Note: these tags have no meaning and are not tied to a particular
# libevdev version
FEDORA_TAG: '2020-02-17.1'
CENTOS_TAG: '2020-02-17.1'
DEBIAN_TAG: '2020-02-17.1'
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
FEDORA_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/fedora/$FEDORA_VERSION:$FEDORA_TAG
CENTOS_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/centos/$CENTOS_VERSION:$CENTOS_TAG
UBUNTU_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/ubuntu/$UBUNTU_VERSION:$UBUNTU_TAG
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
MESON_BUILDDIR: 'build dir'
.default_artifacts:
artifacts:
paths:
- _build/test/test-suite.log
- builddir/meson-logs/testlog*.txt
expire_in: 1 week
when: on_failure
reports:
junit: junit-*.xml
.autotools_build:
extends:
- .default_artifacts
script:
- mkdir _build
- pushd _build > /dev/null
- ../autogen.sh --disable-silent-rules $CONFIGURE_FLAGS
- make
- make check
- if ! [[ -z "$MAKE_ARGS" ]]; then make $MAKE_ARGS; fi
- popd > /dev/null
.meson_build:
extends:
- .default_artifacts
script:
- meson builddir $MESON_ARGS
- ninja -C builddir $NINJA_ARGS
- if ! [[ -z '$MESON_TEST_ARGS' ]]; then
meson test -C builddir $MESON_TEST_ARGS;
fi
#################################################################
# #
# prep stage #
# #
#################################################################
# Re-generate the CI script and make sure it's the one currently checked in
# If this job fails, re-generate the gitlab-ci.yml script, see
# $SRCDIR/.gitlab-ci/generate-gitlab-ci.py
#
check-ci-script:
image: golang:alpine
stage: prep
before_script:
- apk add python3 git
- pip3 install --user jinja2
script:
- python3 ./.gitlab-ci/generate-gitlab-ci.py
- git diff --exit-code && exit 0 || true
- echo "Committed gitlab-ci.yml differs from generated gitlab-ci.yml. Please verify"
- exit 1
check-commit:
image: golang:alpine
stage: prep
before_script:
- apk add python3 git
script:
- pip3 install GitPython
- pip3 install pytest
- |
pytest --junitxml=results.xml \
--tb=line \
--assert=plain \
./.gitlab-ci/check-commit.py
except:
- master@libevdev/libevdev
variables:
GIT_DEPTH: 100
artifacts:
reports:
junit: results.xml
.pull_upstream_or_rebuild:
before_script:
# log in to the registry
- podman login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
# get the full container image name (DISTRIB_VERSION still has indirections)
- IMAGE=$(eval echo "$DISTRIB_FLAVOR/$DISTRIB_VERSION:$TAG")
- |
# force rebuild if schedule, reuse otherwise
if [[ $CI_PIPELINE_SOURCE != "schedule" ]] ;
then
# pull the latest upstream image if it exists
skopeo copy docker://$CI_REGISTRY/$UPSTREAM_REPO/$IMAGE \
docker://$CI_REGISTRY_IMAGE/$IMAGE && exit 0 || true ;
# check if our image is already in the current registry
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:
extends:
- .fedora@container-build
- .pull_upstream_or_rebuild
stage: prep
variables:
GIT_STRATEGY: none
FEDORA_VERSION: '30'
DISTRIB_FLAVOR: fedora
DISTRIB_VERSION: $FEDORA_VERSION
TAG: $FEDORA_TAG
### fedora 31
fedora:31@container-prep:
extends:
- .fedora@container-build
- .pull_upstream_or_rebuild
stage: prep
variables:
GIT_STRATEGY: none
FEDORA_VERSION: '31'
DISTRIB_FLAVOR: fedora
DISTRIB_VERSION: $FEDORA_VERSION
TAG: $FEDORA_TAG
### ubuntu 19.10
ubuntu:19.10@container-prep:
extends:
- .ubuntu@container-build
- .pull_upstream_or_rebuild
stage: prep
variables:
GIT_STRATEGY: none
UBUNTU_VERSION: '19.10'
DISTRIB_FLAVOR: ubuntu
DISTRIB_VERSION: $UBUNTU_VERSION
TAG: $UBUNTU_TAG
### ubuntu 19.04
ubuntu:19.04@container-prep:
extends:
- .ubuntu@container-build
- .pull_upstream_or_rebuild
stage: prep
variables:
GIT_STRATEGY: none
UBUNTU_VERSION: '19.04'
DISTRIB_FLAVOR: ubuntu
DISTRIB_VERSION: $UBUNTU_VERSION
TAG: $UBUNTU_TAG
### debian stable
debian:stable@container-prep:
extends:
- .debian@container-build
- .pull_upstream_or_rebuild
stage: prep
variables:
GIT_STRATEGY: none
DEBIAN_VERSION: 'stable'
DISTRIB_FLAVOR: debian
DISTRIB_VERSION: $DEBIAN_VERSION
TAG: $DEBIAN_TAG
### debian sid
debian:sid@container-prep:
extends:
- .debian@container-build
- .pull_upstream_or_rebuild
stage: prep
variables:
GIT_STRATEGY: none
DEBIAN_VERSION: 'sid'
DISTRIB_FLAVOR: debian
DISTRIB_VERSION: $DEBIAN_VERSION
TAG: $DEBIAN_TAG
### centos 7
centos:7@container-prep:
extends:
- .centos@container-build
- .pull_upstream_or_rebuild
stage: prep
variables:
GIT_STRATEGY: none
CENTOS_VERSION: '7'
DISTRIB_FLAVOR: centos
DISTRIB_VERSION: $CENTOS_VERSION
TAG: $CENTOS_TAG
### centos 8
centos:8@container-prep:
extends:
- .centos@container-build
- .pull_upstream_or_rebuild
stage: prep
variables:
GIT_STRATEGY: none
CENTOS_VERSION: '8'
DISTRIB_FLAVOR: centos
DISTRIB_VERSION: $CENTOS_VERSION
TAG: $CENTOS_TAG
### arch rolling
arch:rolling@container-prep:
extends:
- .arch@container-build
- .pull_upstream_or_rebuild
stage: prep
variables:
GIT_STRATEGY: none
ARCH_VERSION: 'rolling'
DISTRIB_FLAVOR: archlinux
DISTRIB_VERSION: $ARCH_VERSION
TAG: $ARCH_TAG
### alpine latest
alpine:latest@container-prep:
extends:
- .alpine@container-build
- .pull_upstream_or_rebuild
stage: prep
variables:
GIT_STRATEGY: none
ALPINE_VERSION: 'latest'
DISTRIB_FLAVOR: alpine
DISTRIB_VERSION: $ALPINE_VERSION
TAG: $ALPINE_TAG
#################################################################
# #
# container clean stage #
# run during the clean stage #
# #
#################################################################
#
# This stage will look for the container images we currently have in
# the registry and will remove any that are not tagged with the provided
# $container_image:$tag
#
.container-clean:
stage: container_clean
image: $BUILDAH_IMAGE
script:
# get the full container image name (CURRENT_CONTAINER_IMAGE still has indirections)
- CONTAINER_IMAGE=$(eval echo "$CURRENT_CONTAINER_IMAGE")
- GITLAB=$(echo $CI_PROJECT_URL | cut -f3 -d/)
- REPOSITORY=$(echo $CONTAINER_IMAGE | cut -f2- -d/ | cut -f1 -d:)
- IMAGE_PATH=$(echo $CONTAINER_IMAGE | cut -f1 -d:)
- LATEST_TAG=$(echo $CONTAINER_IMAGE | cut -f2 -d:)
# log in to the registry (read only)
- podman login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
# get the r/w token from the settings to access the registry
#
# each developer needs to register a secret variable that contains
# a personal token with api access. The token
# - must be named PERSONAL_TOKEN_$USER (for example PERSONAL_TOKEN_bentiss)
# - must be registered in the CI/CD Variables section as type file
# - value must be a netrc file as a single-line string:
# default login <user> password <token value>
# e.g. "default login bentiss password 1235abcde"
- tokenname="PERSONAL_TOKEN_$GITLAB_USER_LOGIN"
- netrcfile=$(eval echo "\$$tokenname")
- if [[ ! -f "$netrcfile" ]]; then
echo "No netrc file found or token is missing, skipping job" && false;
fi
# request a token for the registry API
- REGISTRY_TOKEN=$(curl https://$GITLAB/jwt/auth --get
--silent --show-error
-d client_id=docker
-d offline_token=true
-d service=container_registry
-d "scope=repository:$REPOSITORY:pull,*"
--fail
--netrc-file "$netrcfile"
| sed -r 's/(\{"token":"|"\})//g')
# get the digest of the latest image
- LATEST_MANIFEST=$(skopeo inspect docker://$IMAGE_PATH:$LATEST_TAG | jq -r '.Digest')
# get the list of tags
- TAGS=$(skopeo inspect docker://$IMAGE_PATH:$LATEST_TAG | jq -r '.RepoTags[]')
# FIXME: is the above command working properly? If not, use below:
# - TAGS=$(curl -X GET -H "accept:application/vnd.docker.distribution.manifest.v2+json"
# -H "authorization:Bearer $REGISTRY_TOKEN"
# https://$CI_REGISTRY/v2/$REPOSITORY/tags/list | jq -r '.tags[]')
# iterate over the tags
- for tag in $TAGS;
do
MANIFEST=$(skopeo inspect docker://$IMAGE_PATH:$tag | jq -r '.Digest');
if test x"$MANIFEST" != x"$LATEST_MANIFEST";
then
echo removing $tag as $MANIFEST;
curl https://$CI_REGISTRY/v2/$REPOSITORY/manifests/$MANIFEST --silent
-H "accept:application/vnd.docker.distribution.manifest.v2+json"
-H "authorization:Bearer $REGISTRY_TOKEN"
--fail --show-error -X DELETE || true
;fi
;done
dependencies: []
allow_failure: true
only:
- schedules
### fedora 30
fedora:30@container-clean:
extends: .container-clean
variables:
GIT_STRATEGY: none
FEDORA_VERSION: '30'
CURRENT_CONTAINER_IMAGE: $FEDORA_CONTAINER_IMAGE
### fedora 31
fedora:31@container-clean:
extends: .container-clean
variables:
GIT_STRATEGY: none
FEDORA_VERSION: '31'
CURRENT_CONTAINER_IMAGE: $FEDORA_CONTAINER_IMAGE
### ubuntu 19.10
ubuntu:19.10@container-clean:
extends: .container-clean
variables:
GIT_STRATEGY: none
UBUNTU_VERSION: '19.10'
CURRENT_CONTAINER_IMAGE: $UBUNTU_CONTAINER_IMAGE
### ubuntu 19.04
ubuntu:19.04@container-clean:
extends: .container-clean
variables:
GIT_STRATEGY: none
UBUNTU_VERSION: '19.04'
CURRENT_CONTAINER_IMAGE: $UBUNTU_CONTAINER_IMAGE
### debian stable
debian:stable@container-clean:
extends: .container-clean
variables:
GIT_STRATEGY: none
DEBIAN_VERSION: 'stable'
CURRENT_CONTAINER_IMAGE: $DEBIAN_CONTAINER_IMAGE
### debian sid
debian:sid@container-clean:
extends: .container-clean
variables:
GIT_STRATEGY: none
DEBIAN_VERSION: 'sid'
CURRENT_CONTAINER_IMAGE: $DEBIAN_CONTAINER_IMAGE
### centos 7
centos:7@container-clean:
extends: .container-clean
variables:
GIT_STRATEGY: none
CENTOS_VERSION: '7'
CURRENT_CONTAINER_IMAGE: $CENTOS_CONTAINER_IMAGE
### centos 8
centos:8@container-clean:
extends: .container-clean
variables:
GIT_STRATEGY: none
CENTOS_VERSION: '8'
CURRENT_CONTAINER_IMAGE: $CENTOS_CONTAINER_IMAGE
### arch rolling
arch:rolling@container-clean:
extends: .container-clean
variables:
GIT_STRATEGY: none
ARCH_VERSION: 'rolling'
CURRENT_CONTAINER_IMAGE: $ARCH_CONTAINER_IMAGE
### alpine latest
alpine:latest@container-clean:
extends: .container-clean
variables:
GIT_STRATEGY: none
ALPINE_VERSION: 'latest'
CURRENT_CONTAINER_IMAGE: $ALPINE_CONTAINER_IMAGE
#################################################################
# #
# build stage #
# #
#################################################################
.autotools-build@template:
extends:
- .autotools_build
stage: build
dependencies: []
variables:
MAKE_ARGS: "distcheck"
.meson-build@template:
extends:
- .meson_build
stage: build
dependencies: []
variables:
NINJA_ARGS: "dist"
fedora:30@autotools-build:
extends: .autotools-build@template
stage: autotools
image: $FEDORA_CONTAINER_IMAGE
variables:
FEDORA_VERSION: '30'
needs: ['fedora:30@container-prep']
fedora:30@meson-build:
extends: .meson-build@template
stage: meson
image: $FEDORA_CONTAINER_IMAGE
variables:
FEDORA_VERSION: '30'
needs: ['fedora:30@container-prep']
fedora:31@autotools-build:
extends: .autotools-build@template
stage: autotools
image: $FEDORA_CONTAINER_IMAGE
variables:
FEDORA_VERSION: '31'
needs: ['fedora:31@container-prep']
fedora:31@meson-build:
extends: .meson-build@template
stage: meson
image: $FEDORA_CONTAINER_IMAGE
variables:
FEDORA_VERSION: '31'
needs: ['fedora:31@container-prep']
ubuntu:19.10@autotools-build:
extends: .autotools-build@template
stage: autotools
image: $UBUNTU_CONTAINER_IMAGE
variables:
UBUNTU_VERSION: '19.10'
needs: ['ubuntu:19.10@container-prep']
ubuntu:19.10@meson-build:
extends: .meson-build@template
stage: meson
image: $UBUNTU_CONTAINER_IMAGE
variables:
UBUNTU_VERSION: '19.10'
needs: ['ubuntu:19.10@container-prep']
ubuntu:19.04@autotools-build:
extends: .autotools-build@template
stage: autotools
image: $UBUNTU_CONTAINER_IMAGE
variables:
UBUNTU_VERSION: '19.04'
needs: ['ubuntu:19.04@container-prep']
ubuntu:19.04@meson-build:
extends: .meson-build@template
stage: meson
image: $UBUNTU_CONTAINER_IMAGE
variables:
UBUNTU_VERSION: '19.04'
needs: ['ubuntu:19.04@container-prep']
debian:stable@autotools-build:
extends: .autotools-build@template
stage: autotools
image: $DEBIAN_CONTAINER_IMAGE
variables:
DEBIAN_VERSION: 'stable'
needs: ['debian:stable@container-prep']
debian:stable@meson-build:
extends: .meson-build@template
stage: meson
image: $DEBIAN_CONTAINER_IMAGE
variables:
DEBIAN_VERSION: 'stable'
needs: ['debian:stable@container-prep']
debian:sid@autotools-build:
extends: .autotools-build@template
stage: autotools
image: $DEBIAN_CONTAINER_IMAGE
variables:
DEBIAN_VERSION: 'sid'
needs: ['debian:sid@container-prep']
debian:sid@meson-build:
extends: .meson-build@template
stage: meson
image: $DEBIAN_CONTAINER_IMAGE
variables:
DEBIAN_VERSION: 'sid'
needs: ['debian:sid@container-prep']
centos:7@autotools-build:
extends: .autotools-build@template
stage: autotools
image: $CENTOS_CONTAINER_IMAGE
variables:
CENTOS_VERSION: '7'
MAKE_ARGS: '' # disable distcheck, requires doxygen
needs: ['centos:7@container-prep']
centos:8@autotools-build:
extends: .autotools-build@template
stage: autotools
image: $CENTOS_CONTAINER_IMAGE
variables:
CENTOS_VERSION: '8'
MAKE_ARGS: '' # disable distcheck, requires doxygen
needs: ['centos:8@container-prep']
arch:rolling@autotools-build:
extends: .autotools-build@template
stage: autotools
image: $ARCH_CONTAINER_IMAGE
variables:
ARCH_VERSION: 'rolling'
needs: ['arch:rolling@container-prep']
arch:rolling@meson-build:
extends: .meson-build@template
stage: meson
image: $ARCH_CONTAINER_IMAGE
variables:
ARCH_VERSION: 'rolling'
needs: ['arch:rolling@container-prep']
alpine:latest@autotools-build:
extends: .autotools-build@template
stage: autotools
image: $ALPINE_CONTAINER_IMAGE
variables:
ALPINE_VERSION: 'latest'
needs: ['alpine:latest@container-prep']
alpine:latest@meson-build:
extends: .meson-build@template
stage: meson
image: $ALPINE_CONTAINER_IMAGE
variables:
ALPINE_VERSION: 'latest'
needs: ['alpine:latest@container-prep']
# Build argument tests
#
# We only run the build option combinations on one image
# because they're supposed to fail equally on all
.fedora-custom-build@autotools-template:
extends: .autotools-build@template
stage: build
image: $FEDORA_CONTAINER_IMAGE
variables:
FEDORA_VERSION: 31
needs: ['fedora:31@container-prep']
no-valgrind:autotools:
extends: .fedora-custom-build@autotools-template
before_script:
- dnf remove -y valgrind
no-check:autotools:
extends: .fedora-custom-build@autotools-template
before_script:
- dnf remove -y check check-devel
no-doxygen:autotools:
extends: .fedora-custom-build@autotools-template
before_script:
- dnf remove -y doxygen
variables:
MAKE_ARGS: '' # disable distcheck, requires doxygen
# doxygen is required for distcheck
no-doxygen-check-valgrind:autotools:
extends: .fedora-custom-build@autotools-template
before_script:
- dnf remove -y doxygen valgrind check check-devel
variables:
MAKE_ARGS: '' # disable distcheck, requires doxygen
no-nm:autotools:
extends: .fedora-custom-build@autotools-template
before_script:
- mv /usr/bin/nm /usr/bin/nm.moved
enable-gcov:autotools:
extends: .fedora-custom-build@autotools-template
variables:
CONFIGURE_FLAGS: "--enable-gcov"
.fedora-custom-build@meson-template:
extends: .meson-build@template
stage: build
image: $FEDORA_CONTAINER_IMAGE
variables:
FEDORA_VERSION: 31
needs: ['fedora:31@container-prep']
no-valgrind:meson:
extends: .fedora-custom-build@meson-template
before_script:
- dnf remove -y valgrind
no-check:meson:
extends: .fedora-custom-build@meson-template
before_script:
- dnf remove -y check check-devel
variables:
MESON_ARGS: -Dtests=disabled
# doxygen is required for dist
no-doxygen:meson:
extends: .fedora-custom-build@meson-template
before_script:
- dnf remove -y doxygen
variables:
MESON_ARGS: -Ddocumentation=disabled
NINJA_ARGS: ''
# doxygen is required for dist
no-doxygen-check-valgrind:meson:
extends: .fedora-custom-build@meson-template
before_script:
- dnf remove -y doxygen valgrind check check-devel
variables:
MESON_ARGS: -Dtests=disabled -Ddocumentation=disabled
NINJA_ARGS: ''
enable-gcov:meson:
extends: .fedora-custom-build@meson-template
variables:
MESON_ARGS: '-Dcoverity=true'
soname:
stage: build
image: $FEDORA_CONTAINER_IMAGE
script:
- ./autogen.sh --prefix=$PWD/prefix-autotools/
- make install
- ls -l $PWD/prefix-autotools/lib/libevdev.so.2.3.0
- meson "$MESON_BUILDDIR" --prefix=$PWD/prefix-meson/
- ninja -C "$MESON_BUILDDIR" install
- ls -l $PWD/prefix-meson/lib64/libevdev.so.2.3.0
variables:
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
script:
- export INSTALLDIR="$PWD/_inst"
- mkdir _build
- pushd _build > /dev/null
- ../autogen.sh --disable-silent-rules $CONFIGURE_FLAGS
- make
- make distcheck
- popd > /dev/null
- mkdir -p _tarball_dir
- tar xf _build/libevdev-*.tar.xz -C _tarball_dir
- pushd _tarball_dir/libevdev-*/ > /dev/null
- meson "$MESON_BUILDDIR" --prefix="$INSTALLDIR"
- ninja -C "$MESON_BUILDDIR" test
- ninja -C "$MESON_BUILDDIR" install
- popd > /dev/null
- ls -lR $INSTALLDIR
variables:
FEDORA_VERSION: 31
needs: ['fedora:31@container-prep']
autotools-from-tarball:
stage: tarballs
image: $FEDORA_CONTAINER_IMAGE
script:
- export INSTALLDIR="$PWD/_inst"
- meson "$MESON_BUILDDIR"
- ninja -C "$MESON_BUILDDIR" dist
- mkdir -p _tarball_dir
- tar xf "$MESON_BUILDDIR"/meson-dist/libevdev-*.xz -C _tarball_dir
- pushd _tarball_dir/libevdev-*/ > /dev/null
- mkdir _build
- pushd _build > /dev/null
- ../autogen.sh --disable-silent-rules --prefix="$INSTALLDIR" $CONFIGURE_FLAGS
- make
- make install
- make distcheck
- popd > /dev/null
- popd > /dev/null
- ls -lR $INSTALLDIR
variables:
FEDORA_VERSION: 31
needs: ['fedora:31@container-prep']