From 770746e089b31438d18828ba90f30718f1d47bbe Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Mon, 21 Jun 2021 22:25:41 +0100 Subject: [PATCH] CI: Start parameterising for OS/architecture No functional change to the test runs, apart from changing the job names. This will allow us to test along more axes without more duplication. Signed-off-by: Daniel Stone --- .gitlab-ci.yml | 72 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 48 insertions(+), 24 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3575d83e..24657a37 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -42,6 +42,8 @@ variables: FDO_UPSTREAM_REPO: wayland/weston + FDO_REPO_SUFFIX: "$BUILD_OS/$BUILD_ARCH" + FDO_DISTRIBUTION_TAG: '2021-07-31.1-wayland-protocols' include: @@ -67,17 +69,17 @@ stages: # Base variables used for anything using a Debian environment -.debian: +.os-debian: variables: + BUILD_OS: debian FDO_DISTRIBUTION_VERSION: buster FDO_DISTRIBUTION_EXEC: 'env FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash .gitlab-ci/debian-install.sh' - FDO_DISTRIBUTION_TAG: '2021-07-31.1-wayland-protocols' .ci-rules: rules: - when: on_success -# does not inherit .ci-rules +# Does not inherit .ci-rules as we only want it to run in MR context. check-commit: extends: - .fdo.ci-fairy @@ -94,14 +96,19 @@ check-commit: reports: junit: results.xml +.debian-x86_64: + extends: + - .os-debian + variables: + BUILD_ARCH: "x86-64" # Build our base container image, which contains the core distribution, the # toolchain, and all our build dependencies. This will be reused in the build # stage. -container_prep: +x86_64-debian-container_prep: extends: - .ci-rules - - .debian + - .debian-x86_64 - .fdo.container-build@debian timeout: 30m stage: container_prep @@ -110,10 +117,6 @@ container_prep: # Core templates for all of our build steps. These are reused by all build jobs # through the `extends` keyword. .build-env: - extends: - - .ci-rules - - .debian - - .fdo.distribution-image@debian timeout: 5m stage: build variables: @@ -129,9 +132,8 @@ container_prep: # run this inside a virtme (qemu wrapper) VM environment so we can test the DRM # backend using the 'vkms' virtual driver under Linux. .build-and-test: - extends: .build-env - tags: - - kvm + extends: + - .ci-rules script: - cd "$BUILDDIR" - meson --prefix="$PREFIX" -Db_sanitize=address ${MESON_OPTIONS} .. @@ -156,7 +158,9 @@ container_prep: # Same as above, but without running any tests. .build-no-test: - extends: .build-env + extends: + - .ci-rules + - .build-env script: - cd "$BUILDDIR" - meson --prefix="$PREFIX" ${MESON_OPTIONS} .. @@ -170,7 +174,22 @@ container_prep: - $BUILDDIR/meson-logs - $PREFIX -full-build: +# OS/architecture-specific variants +.build-env-debian-x86_64: + extends: + - .debian-x86_64 + - .fdo.suffixed-image@debian + - .build-env + +.test-env-debian-x86_64: + tags: + - kvm + extends: + - .build-env-debian-x86_64 + - .build-and-test + +# Full build, used for testing under KVM. +x86_64-debian-full-build: variables: MESON_OPTIONS: > -Doptimization=0 @@ -178,7 +197,7 @@ full-build: -Dwerror=true -Dtest-skip-is-failure=true -Dlauncher-libseat=true - extends: .build-and-test + extends: .test-env-debian-x86_64 after_script: - ninja -C "$BUILDDIR" coverage-html > "$BUILDDIR/meson-logs/ninja-coverage-html.txt" - ninja -C "$BUILDDIR" coverage-xml @@ -187,14 +206,19 @@ full-build: reports: cobertura: $BUILDDIR/meson-logs/coverage.xml +# Docs should be invariant on all architectures, so we only do it on Debian +# x86-64. docs-build: variables: MESON_OPTIONS: > -Dwerror=true -Ddoc=true - extends: .build-no-test + extends: + - .build-env-debian-x86_64 + - .build-no-test -no-gl-build: +# Building without gl-renderer, to make sure this keeps working. +x86_64-debian-no-gl-build: variables: MESON_OPTIONS: > -Dsimple-clients=damage,im,shm,touch,dmabuf-v4l @@ -203,7 +227,7 @@ no-gl-build: -Dpipewire=false -Dwerror=true -Dlauncher-libseat=true - extends: .build-and-test + extends: .test-env-debian-x86_64 # Expose docs and coverage reports, so we can show users any changes to these # inside their merge requests, letting us check them before merge. @@ -215,20 +239,20 @@ no-gl-build: docs-and-coverage: extends: - .ci-rules - - .debian - - .fdo.distribution-image@debian + - .debian-x86_64 + - .fdo.suffixed-image@debian stage: pages timeout: 5m script: - mv prefix-weston-docs-build/share/doc/weston Documentation - - mv build-weston-full-build/meson-logs/coveragereport Test_Coverage + - mv build-weston-x86_64-debian-full-build/meson-logs/coveragereport Test_Coverage - rm Test_Coverage/gcov.css - cp doc/style/lcov-style.css Test_Coverage/gcov.css - cp doc/style/*.png Test_Coverage/ - rm -rf build-* prefix-* dependencies: - docs-build - - full-build + - x86_64-debian-full-build artifacts: expose_as: 'Documentation preview and test coverage report' paths: @@ -242,8 +266,8 @@ docs-and-coverage: # the upstream repo. pages: extends: - - .debian - - .fdo.distribution-image@debian + - .debian-x86_64 + - .fdo.suffixed-image@debian stage: pages timeout: 5m dependencies: