.templates_sha: &template_sha 18194044f0f984c8815bc9a1a146582f6bf15d41
include:
- project: 'freedesktop/ci-templates'
ref: *template_sha
file: '/templates/alpine.yml'
- project: 'freedesktop/ci-templates'
ref: *template_sha
file: '/templates/arch.yml'
- project: 'freedesktop/ci-templates'
ref: *template_sha
file: '/templates/centos.yml'
- project: 'freedesktop/ci-templates'
ref: *template_sha
file: '/templates/debian.yml'
- project: 'freedesktop/ci-templates'
ref: *template_sha
file: '/templates/fedora.yml'
- project: 'freedesktop/ci-templates'
ref: *template_sha
file: '/templates/ubuntu.yml'
stages:
- prep - build - VM - autotools - meson - tarballs - container_clean - merge-check
variables:
FDO_UPSTREAM_REPO: libevdev/libevdev
LIBEVDEV_SKIP_ROOT_TESTS: 1
GIT_DEPTH: 1
MESON_BUILDDIR: 'build dir'
.default_artifacts:
artifacts:
paths:
- _build/test/test-suite.log
- $MESON_BUILDDIR/meson-logs/
expire_in: 1 week
when: on_failure
reports:
junit: $MESON_BUILDDIR/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:
- .gitlab-ci/meson-build.sh
.fedora:33:
extends: .fdo.distribution-image@fedora
variables:
FDO_DISTRIBUTION_TAG: '2021-01-04.1'
FDO_DISTRIBUTION_VERSION: '33'
.fedora:32:
extends: .fdo.distribution-image@fedora
variables:
FDO_DISTRIBUTION_TAG: '2021-01-04.1'
FDO_DISTRIBUTION_VERSION: '32'
.ubuntu:20.04:
extends: .fdo.distribution-image@ubuntu
variables:
FDO_DISTRIBUTION_TAG: '2021-01-04.1'
FDO_DISTRIBUTION_VERSION: '20.04'
.ubuntu:20.10:
extends: .fdo.distribution-image@ubuntu
variables:
FDO_DISTRIBUTION_TAG: '2021-01-04.1'
FDO_DISTRIBUTION_VERSION: '20.10'
.debian:stable:
extends: .fdo.distribution-image@debian
variables:
FDO_DISTRIBUTION_TAG: '2021-01-04.1'
FDO_DISTRIBUTION_VERSION: 'stable'
.debian:sid:
extends: .fdo.distribution-image@debian
variables:
FDO_DISTRIBUTION_TAG: '2021-01-04.1'
FDO_DISTRIBUTION_VERSION: 'sid'
.centos:7:
extends: .fdo.distribution-image@centos
variables:
FDO_DISTRIBUTION_TAG: '2021-01-04.1'
FDO_DISTRIBUTION_VERSION: '7'
.centos:8:
extends: .fdo.distribution-image@centos
variables:
FDO_DISTRIBUTION_TAG: '2021-01-04.1'
FDO_DISTRIBUTION_VERSION: '8'
.arch:rolling:
extends: .fdo.distribution-image@arch
variables:
FDO_DISTRIBUTION_TAG: '2021-01-04.1'
FDO_DISTRIBUTION_VERSION: 'rolling'
.alpine:latest:
extends: .fdo.distribution-image@alpine
variables:
FDO_DISTRIBUTION_TAG: '2021-01-04.1'
FDO_DISTRIBUTION_VERSION: 'latest'
check-ci-script:
image: golang:alpine
stage: prep
before_script:
- apk add python3 py-pip git
- pip3 install git+http://gitlab.freedesktop.org/freedesktop/ci-templates
script:
- ci-fairy generate-template
- 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 py-pip git
- pip3 install git+http://gitlab.freedesktop.org/freedesktop/ci-templates
script:
- ci-fairy check-commits --signed-off-by --junit-xml=results.xml
except:
- master@libevdev/libevdev
variables:
GIT_DEPTH: 100
artifacts:
reports:
junit: results.xml
check-merge-request:
image: golang:alpine
stage: merge-check
before_script:
- apk add python3 py-pip git
- pip3 install git+http://gitlab.freedesktop.org/freedesktop/ci-templates
script:
- ci-fairy check-merge-request --require-allow-collaboration --junit-xml=results.xml
artifacts:
when: on_failure
reports:
junit: results.xml
allow_failure: true
.fedora.packages:
variables:
FDO_DISTRIBUTION_PACKAGES: 'git gcc gcc-c++ meson automake autoconf libtool make pkgconfig python3 check-devel valgrind binutils doxygen xz clang-analyzer'
.ubuntu.packages:
variables:
FDO_DISTRIBUTION_PACKAGES: 'git gcc g++ meson automake autoconf libtool make pkg-config python3 check valgrind binutils doxygen xz-utils'
.debian.packages:
variables:
FDO_DISTRIBUTION_PACKAGES: 'git gcc g++ meson automake autoconf libtool make pkg-config python3 check valgrind binutils doxygen xz-utils'
.centos.packages:
variables:
FDO_DISTRIBUTION_PACKAGES: 'git gcc gcc-c++ automake autoconf libtool make pkgconfig python3 check-devel valgrind binutils xz'
.arch.packages:
variables:
FDO_DISTRIBUTION_PACKAGES: 'git gcc meson automake autoconf libtool make pkgconfig python3 check valgrind binutils doxygen'
.alpine.packages:
variables:
FDO_DISTRIBUTION_PACKAGES: 'git gcc g++ meson automake autoconf libtool make pkgconfig python3 check-dev valgrind binutils doxygen xz linux-headers'
.fedora:33@qemu-prep:
extends:
- .fedora:33
- .fedora.packages
- .fdo.qemu-build@fedora
stage: prep
tags:
- kvm
variables:
GIT_STRATEGY: none
FDO_DISTRIBUTION_TAG: qemu-2021-01-04.1
allow_failure: true
.fedora:33@qemu-forced-rebuild:
extends:
- .fedora:33@qemu-prep
variables:
FDO_FORCE_REBUILD: 1
only:
- schedules
.fedora:32@qemu-prep:
extends:
- .fedora:32
- .fedora.packages
- .fdo.qemu-build@fedora
stage: prep
tags:
- kvm
variables:
GIT_STRATEGY: none
FDO_DISTRIBUTION_TAG: qemu-2021-01-04.1
allow_failure: true
.fedora:32@qemu-forced-rebuild:
extends:
- .fedora:32@qemu-prep
variables:
FDO_FORCE_REBUILD: 1
only:
- schedules
fedora:32@qemu-prep:
extends: .fedora:32@qemu-prep
fedora:32@qemu-forced-rebuild:
extends: .fedora:32@qemu-forced-rebuild
fedora:33@container-prep:
extends:
- .fedora:33
- .fedora.packages
- .fdo.container-build@fedora
stage: prep
variables:
GIT_STRATEGY: none
fedora:33@container-forced-rebuild:
extends:
- fedora:33@container-prep
only:
- schedules
variables:
FDO_FORCE_REBUILD: 1
fedora:32@container-prep:
extends:
- .fedora:32
- .fedora.packages
- .fdo.container-build@fedora
stage: prep
variables:
GIT_STRATEGY: none
fedora:32@container-forced-rebuild:
extends:
- fedora:32@container-prep
only:
- schedules
variables:
FDO_FORCE_REBUILD: 1
ubuntu:20.04@container-prep:
extends:
- .ubuntu:20.04
- .ubuntu.packages
- .fdo.container-build@ubuntu
stage: prep
variables:
GIT_STRATEGY: none
ubuntu:20.04@container-forced-rebuild:
extends:
- ubuntu:20.04@container-prep
only:
- schedules
variables:
FDO_FORCE_REBUILD: 1
ubuntu:20.10@container-prep:
extends:
- .ubuntu:20.10
- .ubuntu.packages
- .fdo.container-build@ubuntu
stage: prep
variables:
GIT_STRATEGY: none
ubuntu:20.10@container-forced-rebuild:
extends:
- ubuntu:20.10@container-prep
only:
- schedules
variables:
FDO_FORCE_REBUILD: 1
debian:stable@container-prep:
extends:
- .debian:stable
- .debian.packages
- .fdo.container-build@debian
stage: prep
variables:
GIT_STRATEGY: none
debian:stable@container-forced-rebuild:
extends:
- debian:stable@container-prep
only:
- schedules
variables:
FDO_FORCE_REBUILD: 1
debian:sid@container-prep:
extends:
- .debian:sid
- .debian.packages
- .fdo.container-build@debian
stage: prep
variables:
GIT_STRATEGY: none
debian:sid@container-forced-rebuild:
extends:
- debian:sid@container-prep
only:
- schedules
variables:
FDO_FORCE_REBUILD: 1
centos:7@container-prep:
extends:
- .centos:7
- .centos.packages
- .fdo.container-build@centos
stage: prep
variables:
GIT_STRATEGY: none
centos:7@container-forced-rebuild:
extends:
- centos:7@container-prep
only:
- schedules
variables:
FDO_FORCE_REBUILD: 1
centos:8@container-prep:
extends:
- .centos:8
- .centos.packages
- .fdo.container-build@centos
stage: prep
variables:
GIT_STRATEGY: none
centos:8@container-forced-rebuild:
extends:
- centos:8@container-prep
only:
- schedules
variables:
FDO_FORCE_REBUILD: 1
arch:rolling@container-prep:
extends:
- .arch:rolling
- .arch.packages
- .fdo.container-build@arch
stage: prep
variables:
GIT_STRATEGY: none
arch:rolling@container-forced-rebuild:
extends:
- arch:rolling@container-prep
only:
- schedules
variables:
FDO_FORCE_REBUILD: 1
alpine:latest@container-prep:
extends:
- .alpine:latest
- .alpine.packages
- .fdo.container-build@alpine
stage: prep
variables:
GIT_STRATEGY: none
alpine:latest@container-forced-rebuild:
extends:
- alpine:latest@container-prep
only:
- schedules
variables:
FDO_FORCE_REBUILD: 1
.container-clean:
stage: container_clean
image: golang:alpine
before_script:
- apk add python3 py-pip git
- pip3 install git+http://gitlab.freedesktop.org/freedesktop/ci-templates
script:
- ci-fairy -v --authfile $AUTHFILE delete-image
--repository $FDO_DISTRIBUTION_NAME/$FDO_DISTRIBUTION_VERSION
--exclude-tag $FDO_DISTRIBUTION_TAG
dependencies: []
allow_failure: true
only:
- schedules
fedora:33@container-clean:
extends:
- .fedora:33
- .container-clean
needs: ["fedora:33@container-prep"]
fedora:32@container-clean:
extends:
- .fedora:32
- .container-clean
needs: ["fedora:32@container-prep"]
ubuntu:20.04@container-clean:
extends:
- .ubuntu:20.04
- .container-clean
needs: ["ubuntu:20.04@container-prep"]
ubuntu:20.10@container-clean:
extends:
- .ubuntu:20.10
- .container-clean
needs: ["ubuntu:20.10@container-prep"]
debian:stable@container-clean:
extends:
- .debian:stable
- .container-clean
needs: ["debian:stable@container-prep"]
debian:sid@container-clean:
extends:
- .debian:sid
- .container-clean
needs: ["debian:sid@container-prep"]
centos:7@container-clean:
extends:
- .centos:7
- .container-clean
needs: ["centos:7@container-prep"]
centos:8@container-clean:
extends:
- .centos:8
- .container-clean
needs: ["centos:8@container-prep"]
arch:rolling@container-clean:
extends:
- .arch:rolling
- .container-clean
needs: ["arch:rolling@container-prep"]
alpine:latest@container-clean:
extends:
- .alpine:latest
- .container-clean
needs: ["alpine:latest@container-prep"]
.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:33@autotools-build:
extends:
- .fedora:33
- .autotools-build@template
stage: autotools
needs: ['fedora:33@container-prep']
fedora:33@meson-build:
extends:
- .fedora:33
- .meson-build@template
stage: meson
needs: ['fedora:33@container-prep']
fedora:32@autotools-build:
extends:
- .fedora:32
- .autotools-build@template
stage: autotools
needs: ['fedora:32@container-prep']
fedora:32@meson-build:
extends:
- .fedora:32
- .meson-build@template
stage: meson
needs: ['fedora:32@container-prep']
ubuntu:20.04@autotools-build:
extends:
- .ubuntu:20.04
- .autotools-build@template
stage: autotools
needs: ['ubuntu:20.04@container-prep']
ubuntu:20.04@meson-build:
extends:
- .ubuntu:20.04
- .meson-build@template
stage: meson
needs: ['ubuntu:20.04@container-prep']
ubuntu:20.10@autotools-build:
extends:
- .ubuntu:20.10
- .autotools-build@template
stage: autotools
needs: ['ubuntu:20.10@container-prep']
ubuntu:20.10@meson-build:
extends:
- .ubuntu:20.10
- .meson-build@template
stage: meson
needs: ['ubuntu:20.10@container-prep']
debian:stable@autotools-build:
extends:
- .debian:stable
- .autotools-build@template
stage: autotools
needs: ['debian:stable@container-prep']
debian:stable@meson-build:
extends:
- .debian:stable
- .meson-build@template
stage: meson
needs: ['debian:stable@container-prep']
debian:sid@autotools-build:
extends:
- .debian:sid
- .autotools-build@template
stage: autotools
needs: ['debian:sid@container-prep']
debian:sid@meson-build:
extends:
- .debian:sid
- .meson-build@template
stage: meson
needs: ['debian:sid@container-prep']
centos:7@autotools-build:
extends:
- .centos:7
- .autotools-build@template
stage: autotools
variables:
MAKE_ARGS: '' needs: ['centos:7@container-prep']
centos:8@autotools-build:
extends:
- .centos:8
- .autotools-build@template
stage: autotools
variables:
MAKE_ARGS: '' needs: ['centos:8@container-prep']
arch:rolling@autotools-build:
extends:
- .arch:rolling
- .autotools-build@template
stage: autotools
needs: ['arch:rolling@container-prep']
arch:rolling@meson-build:
extends:
- .arch:rolling
- .meson-build@template
stage: meson
needs: ['arch:rolling@container-prep']
alpine:latest@autotools-build:
extends:
- .alpine:latest
- .autotools-build@template
stage: autotools
needs: ['alpine:latest@container-prep']
alpine:latest@meson-build:
extends:
- .alpine:latest
- .meson-build@template
stage: meson
needs: ['alpine:latest@container-prep']
.fedora-custom-build@autotools-template:
extends:
- .fedora:33
- .autotools-build@template
stage: build
needs: ['fedora:33@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: ''
no-doxygen-check-valgrind:autotools:
extends: .fedora-custom-build@autotools-template
before_script:
- dnf remove -y doxygen valgrind check check-devel
variables:
MAKE_ARGS: ''
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:
- .fedora:33
- .meson-build@template
stage: build
needs: ['fedora:33@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
SKIP_MESON_TEST: 1
no-doxygen:meson:
extends: .fedora-custom-build@meson-template
before_script:
- dnf remove -y doxygen
variables:
MESON_ARGS: -Ddocumentation=disabled
NINJA_ARGS: ''
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: ''
SKIP_MESON_TEST: 1
enable-gcov:meson:
extends: .fedora-custom-build@meson-template
variables:
MESON_ARGS: '-Dcoverity=true'
scan-build:meson:
extends: .fedora-custom-build@meson-template
variables:
NINJA_ARGS: 'scan-build'
SKIP_MESON_TEST: 1
static-build:meson:
extends: .fedora-custom-build@meson-template
script:
- meson "$MESON_BUILDDIR" --default-library=static --prefix=$PWD/prefix-meson/
- ninja -C "$MESON_BUILDDIR" install
- ls -l $PWD/prefix-meson/lib64/libevdev.a
soname:
extends:
- .fedora:33
stage: build
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
needs: ['fedora:33@container-prep']
.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:32:
extends:
- .fedora:32
stage: VM
image: $CI_REGISTRY_IMAGE/$FDO_DISTRIBUTION_NAME/$FDO_DISTRIBUTION_VERSION:qemu-$FDO_DISTRIBUTION_TAG
tags:
- kvm
variables:
MESON_BUILDDIR: build_dir
script:
- /app/vmctl start
- *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 sshenv vm:~/$CI_PROJECT_NAME/.meson_environment"
- /app/vmctl exec "cd $CI_PROJECT_NAME ; .gitlab-ci/meson-build.sh" && touch .success || true
- scp -r vm:$CI_PROJECT_NAME/"$MESON_BUILDDIR" .
- *check_tainted
- /app/vmctl stop
- 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
reports:
junit: $MESON_BUILDDIR/junit-*.xml
retry:
max: 2
when: script_failure
needs: ['fedora:32@qemu-prep']
qemu:meson:
extends: .qemu@fedora:32
qemu:meson:valgrind:
extends: .qemu@fedora:32
variables:
MESON_TEST_ARGS: '--setup=valgrind'
meson-from-tarball:
extends:
- .fedora:32
stage: tarballs
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
needs: ['fedora:32@container-prep']
autotools-from-tarball:
extends:
- .fedora:32
stage: tarballs
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
needs: ['fedora:32@container-prep']