From 3bb98d758bfcab4c03d5f3f906a1bab0810e51e2 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Mon, 17 Jan 2022 16:07:04 -0800 Subject: gitlab CI: add a basic build test Signed-off-by: Alan Coopersmith --- .gitlab-ci.yml | 127 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..564e6cc --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,127 @@ +# vim: set expandtab shiftwidth=2 tabstop=8 textwidth=0 filetype=yaml: +# +# This CI uses the freedesktop.org ci-templates. +# Please see the ci-templates documentation for details: +# https://freedesktop.pages.freedesktop.org/ci-templates/ + +.templates_sha: &template_sha 34f4ade99434043f88e164933f570301fd18b125 # see https://docs.gitlab.com/ee/ci/yaml/#includefile + + +include: + # FreeBSD container builder template + - project: 'freedesktop/ci-templates' + ref: *template_sha + file: '/templates/freebsd.yml' + - project: 'freedesktop/ci-templates' + ref: *template_sha + file: '/templates/ci-fairy.yml' + - template: Security/SAST.gitlab-ci.yml + + +stages: + - prep # prep work like rebuilding the container images if there is a change + - build # for actually building and testing things in a container + - test + - deploy + + +variables: + FDO_UPSTREAM_REPO: 'xorg/driver/xf86-input-mouse' + # The tag should be updated each time the list of packages is updated. + # Changing a tag forces the associated image to be rebuilt. + # Note: the tag has no meaning, we use a date format purely for readability + FDO_DISTRIBUTION_TAG: '2022-01-17.0' + FDO_DISTRIBUTION_VERSION: '13.0' + # Packages needed to build enough of xorg-server to build this driver + EXTRA_PACKAGES: 'meson ninja pixman xtrans libXau libXdmcp libXfont2 libxkbfile libxcvt libpciaccess font-util' + FDO_DISTRIBUTION_PACKAGES: 'git gcc pkgconf autoconf automake libtool xorg-macros xorgproto $EXTRA_PACKAGES' + +# +# Verify that commit messages are as expected, signed-off, etc. +# +check-commits: + extends: + - .fdo.ci-fairy + stage: prep + script: + - ci-fairy check-commits --signed-off-by --junit-xml=results.xml + except: + - master@xorg/driver/xf86-input-mouse + variables: + GIT_DEPTH: 100 + artifacts: + reports: + junit: results.xml + +# +# Verify that the merge request has the allow-collaboration checkbox ticked +# +check-merge-request: + extends: + - .fdo.ci-fairy + stage: deploy + script: + - ci-fairy check-merge-request --require-allow-collaboration --junit-xml=results.xml + artifacts: + when: on_failure + reports: + junit: results.xml + allow_failure: true + + +# +# Build a container with the given tag and the packages pre-installed. +# This only happens if the tag changes, otherwise the existing image is +# re-used. +# +container-prep: + extends: + - .fdo.qemu-build@freebsd@x86_64 + stage: prep + variables: + GIT_STRATEGY: none + + +# +# The default build, runs on the image built above. +# +build: + stage: build + extends: + - .fdo.distribution-image@freebsd + variables: + XSERVER_MESON_FLAGS: -Dglx=false -Dglamor=false -Dudev=false -Dudev_kms=false + script: + # start the VM. This also sets up ssh/scp to connect to "vm" + # correctly. + - /app/vmctl start + # copy our workspace to the VM + # The quotes are required to stop the ':' from parsing as yaml + - scp -r $PWD "vm:" + # We don't want any failed commands to exit our script until VM + # cleanup has been completed. + - set +e + # First we need to build and install the Xorg server to get the SDK headers + - | + /app/vmctl exec "git clone --depth=1 https://gitlab.freedesktop.org/xorg/xserver.git" + /app/vmctl exec "mkdir xserver/_builddir" + /app/vmctl exec "cd xserver/_builddir && meson setup $XSERVER_MESON_FLAGS" + /app/vmctl exec "cd xserver/_builddir && ninja" + /app/vmctl exec "cd xserver/_builddir && ninja install" + # Now build this driver + - | + /app/vmctl exec "mkdir $CI_PROJECT_NAME/_builddir" + /app/vmctl exec "cd $CI_PROJECT_NAME/_builddir && ../autogen.sh --disable-silent-rules PKG_CONFIG_PATH=/usr/local/lib/pkgconfig" + /app/vmctl exec "cd $CI_PROJECT_NAME/_builddir && make" + /app/vmctl exec "cd $CI_PROJECT_NAME/_builddir && make check" + /app/vmctl exec "cd $CI_PROJECT_NAME/_builddir && env PKG_CONFIG_PATH=/usr/local/lib/pkgconfig make distcheck" && touch .success + # copy any test results from the VM to our container so we can + # save them as artifacts + # - scp -r vm:$CI_PROJECT_NAME/test-results.xml . + # shut down the VM + - /app/vmctl stop + # VM cleanup is complete, any command failures now should result in + # a CI failed job + - set -e + # our CI script exit code should match the test command exit status + - test -e .success || exit 1 -- cgit v1.2.1