# 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 # check-commits: extends: - .fdo.ci-fairy stage: prep script: - ci-fairy check-commits --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