diff options
author | Alex Richardson <arichardson@FreeBSD.org> | 2022-05-25 20:51:13 +0000 |
---|---|---|
committer | Simon McVittie <smcv@collabora.com> | 2022-08-10 11:18:20 +0000 |
commit | d67132d3d033dc609eef8dd7ea2a3f10825633e0 (patch) | |
tree | 38854a6c2564dd08f7db6803c5add96b3f523ebc /.gitlab-ci.yml | |
parent | a214ed824d257b5ab3ea81c8286395e65df81423 (diff) | |
download | dbus-d67132d3d033dc609eef8dd7ea2a3f10825633e0.tar.gz |
gitlab-ci: Add a FreeBSD CMake CI job
This uses https://gitlab.freedesktop.org/freedesktop/ci-templates,
and runs the FreeBSD build+test inside a QEMU VM.
This depends on the recently merged ci-templates MR
https://gitlab.freedesktop.org/freedesktop/ci-templates/-/merge_requests/142,
so we bump the required ci-templates commit hash.
There is one undiagnosed failure in test-fdpass that needs investigation,
so for now failures are permitted. Autotools and meson jobs will be added
in follow-up commits.
Diffstat (limited to '.gitlab-ci.yml')
-rw-r--r-- | .gitlab-ci.yml | 86 |
1 files changed, 80 insertions, 6 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ba9200d6..e44b47dc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,9 +22,10 @@ include: - project: 'freedesktop/ci-templates' - ref: 957024f97e7b0f2cedc9ef29c6970fbeadd9326c + ref: e9a461877f8c7f9fed9fff5491067ec3c3472559 file: - '/templates/debian.yml' + - '/templates/freebsd.yml' - '/templates/opensuse.yml' image: debian:bullseye-slim @@ -52,6 +53,9 @@ variables: WINDOWS_AMD64_SUFFIX: 'amd64/windows' WINDOWS_IMAGE: "$CI_REGISTRY_IMAGE/$WINDOWS_AMD64_SUFFIX:$WINDOWS_TAG-$UPSTREAM_BRANCH" WINDOWS_UPSTREAM_IMAGE: "$CI_REGISTRY/$UPSTREAM_REPO/$WINDOWS_AMD64_SUFFIX:$WINDOWS_TAG-$UPSTREAM_BRANCH" + # variables used by the ci-templates scripts: + FDO_UPSTREAM_REPO: dbus/dbus + FDO_DISTRIBUTION_EXEC: './tools/ci-install.sh' .debian-vars: variables: @@ -61,7 +65,15 @@ variables: .opensuse-vars: variables: FDO_DISTRIBUTION_VERSION: 'leap' - FDO_DISTRIBUTION_TAG: '2022-05-14' # Bump this version on every ci-install.sh change + FDO_DISTRIBUTION_TAG: '2022-05-14.0' # Bump this version on every ci-install.sh change + +.freebsd-vars: + variables: + BUILD_OS: freebsd + BUILD_ARCH: "x86_64" + FDO_DISTRIBUTION_VERSION: '13.0' + FDO_DISTRIBUTION_TAG: '2022-08-08.0' # Bump this version on every ci-install.sh change + FDO_REPO_SUFFIX: "$BUILD_OS/$BUILD_ARCH" .cmake-common: variables: @@ -137,8 +149,6 @@ debian image: extends: - .fdo.container-build@debian - .debian-vars - variables: - FDO_DISTRIBUTION_EXEC: './tools/ci-install.sh' stage: 'build docker' .debian-build: @@ -241,8 +251,6 @@ opensuse image: extends: - .fdo.container-build@opensuse - .opensuse-vars - variables: - FDO_DISTRIBUTION_EXEC: './tools/ci-install.sh' stage: 'build docker' .suse-build: @@ -383,4 +391,70 @@ windows-meson-vs15-x86: - "build/config.h" - "build/meson-logs/*.txt" +freebsd image: + extends: + - .fdo.qemu-build@freebsd@x86_64 + - .freebsd-vars + stage: 'build docker' + +# Full build and test. +.do-build-qemu: + stage: build + variables: + ci_parallel: "${FDO_CI_CONCURRENT:-2}" + ci_distro: "$BUILD_OS" + ci_suite: "$FDO_DISTRIBUTION_VERSION" + ci_test_fatal: "no" # One undiagnosed test failure in test-fdpass + script: + # Start the VM and copy our workspace to the VM + - /app/vmctl start + # Copy files over to the VM using rsync (not scp) to preserve permissions. + - rsync -av $PWD "vm:" + - /app/vmctl exec "cd $CI_PROJECT_NAME && ./tools/ci-install.sh" + # Variables are not forwarded to the vm automatically so we forward the + # ones starting with ci_ to ci-build.sh manually. This works because + # $(env | grep "ci_.*=") is evaluated on the current host not in the VM. + # We also have to forward builddir since this is required by ci-build.sh. + - /app/vmctl exec "cd $CI_PROJECT_NAME && env builddir=$builddir $(echo $(env | grep "ci_.*=")) bash -x ./tools/ci-build.sh $CI_BUILD_ARGS" + # Copy build artifacts from the VM for archiving/JUnit XML display + - mkdir -p "$builddir" + - scp -v "vm:$CI_PROJECT_NAME/$builddir/config.h" . || true + - scp -v "vm:$ci_cmake_junit_output" "$ci_cmake_junit_output" || true + # Finally, shut down the VM. + - /app/vmctl stop + artifacts: + name: dbus-$CI_JOB_NAME + when: always + paths: + - test-results.xml + reports: + junit: test-results.xml + +.build-env-freebsd: + extends: + - .fdo.suffixed-image@freebsd + - .freebsd-vars + - .do-build-qemu + needs: + - job: "freebsd image" + artifacts: false + +freebsd cmake debug: + extends: + - .cmake-common + - .build-env-freebsd + variables: + # Don't build doxygen documentation since installing the required tools + # massively increases the VM image (and therefore container) size. + CI_BUILD_ARGS: "-DDBUS_ENABLE_DOXYGEN_DOCS=OFF -DDBUS_ENABLE_XML_DOCS=ON -DCMAKE_BUILD_TYPE=Debug" + +freebsd cmake release: + extends: + - .cmake-common + - .build-env-freebsd + variables: + # Don't build doxygen documentation since installing the required tools + # massively increases the VM image (and therefore container) size. + CI_BUILD_ARGS: "-DDBUS_ENABLE_DOXYGEN_DOCS=OFF -DDBUS_ENABLE_XML_DOCS=ON -DCMAKE_BUILD_TYPE=Release" + # vim:set sw=2 sts=2 et: |