mutter/.gitlab-ci.yml
Jonas Ådahl 6e27cc0548 ci: Generate junit report if project doesn't enable the registry
The image registry must be enabled for the CI to work, as the container
image from the upstream registry is placed (as a reference, more or
less) in the local registry.

Recently, ci-templates got a bit more helpful if this happened, and will
fail up front and generate a JUnit report with a message describing the
issue.

Update to this version.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1587>
2020-11-23 14:27:38 +00:00

217 lines
5.5 KiB
YAML

include:
- remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/7ea696055e322cc7aa4bcbe5422b56a198c4bdff/templates/fedora.yml'
- remote: "https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/7ea696055e322cc7aa4bcbe5422b56a198c4bdff/templates/ci-fairy.yml"
stages:
- review
- prepare
- build
- test
- coverage
.mutter.fedora:33:
variables:
FDO_DISTRIBUTION_VERSION: 33
FDO_DISTRIBUTION_TAG: '2020-11-20.1'
FDO_UPSTREAM_REPO: GNOME/mutter
FDO_DISTRIBUTION_EXEC: |
dnf install -y 'dnf-command(builddep)' &&
dnf builddep -y mutter --setopt=install_weak_deps=False &&
# For running unit tests
dnf install -y xorg-x11-server-Xvfb mesa-dri-drivers dbus dbus-x11 \
xorg-x11-server-Xvfb 'pkgconfig(accountsservice)' \
gnome-control-center gcovr libnma python3-gobject \
python3-dbusmock &&
# GNOME Shell
dnf builddep -y gnome-shell --setopt=install_weak_deps=False &&
dnf install -y 'pkgconfig(gtk4)' 'pkgconfig(vulkan)' &&
dnf remove -y gnome-bluetooth-libs-devel &&
dnf remove -y --noautoremove mutter mutter-devel &&
./.gitlab-ci/install-meson-project.sh \
-Dlibaudit=disabled \
-Dplymouth=disabled \
-Dselinux=disabled \
-Dxdmcp=disabled \
https://gitlab.gnome.org/GNOME/gdm.git \
3.38.0 . &&
dnf clean all
default:
# Cancel jobs if newer commits are pushed to the branch
interruptible: true
# Auto-retry jobs in case of infra failures
retry:
max: 1
when:
- 'runner_system_failure'
- 'stuck_or_timeout_failure'
- 'scheduler_failure'
- 'api_failure'
workflow:
rules:
- if: '$CI_MERGE_REQUEST_IID'
- if: '$CI_COMMIT_TAG'
- if: '$CI_COMMIT_BRANCH'
.pipline-guard: &pipline-guard
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- if: '$CI_COMMIT_TAG'
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
- if: '$CI_COMMIT_BRANCH =~ /^gnome-[0-9-]+$/'
- when: 'manual'
check-commit-log:
extends:
- .fdo.ci-fairy
stage: review
variables:
GIT_DEPTH: "100"
script:
- ./.gitlab-ci/check-commit-log.sh
artifacts:
expire_in: 1 week
paths:
- commit-message-junit-report.xml
reports:
junit: commit-message-junit-report.xml
<<: *pipline-guard
check-merge-request:
extends:
- .fdo.ci-fairy
stage: review
script:
- if [[ x"$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" != "x" ]] ;
then
ci-fairy check-merge-request --require-allow-collaboration --junit-xml=check-merge-request-report.xml ;
else
echo "Not a merge request" ;
fi
artifacts:
expire_in: 1 week
paths:
- check-merge-request-report.xml
reports:
junit: check-merge-request-report.xml
<<: *pipline-guard
build-fedora-container:
extends:
- .fdo.container-build@fedora@x86_64
- .mutter.fedora:33
stage: prepare
needs:
- check-commit-log
- check-merge-request
build-mutter:
extends:
- .fdo.distribution-image@fedora
- .mutter.fedora:33
stage: build
needs:
- build-fedora-container
script:
- meson . build -Dbuildtype=debugoptimized -Db_coverage=true -Degl_device=true -Dwayland_eglstream=true --werror --prefix /usr
- ninja -C build
- ninja -C build install
artifacts:
expire_in: 1 day
paths:
- build
build-without-opengl-and-glx:
extends:
- .fdo.distribution-image@fedora
- .mutter.fedora:33
stage: build
needs:
- build-fedora-container
script:
- meson . build -Dbuildtype=debugoptimized -Dopengl=false -Dglx=false -Degl_device=true -Dwayland_eglstream=true --werror --prefix /usr
- ninja -C build
- ninja -C build install
artifacts:
paths:
- build/meson-logs
build-without-native-backend-and-wayland:
extends:
- .fdo.distribution-image@fedora
- .mutter.fedora:33
stage: build
needs:
- build-fedora-container
script:
- meson . build -Dbuildtype=debugoptimized -Dnative_backend=false -Dudev=false -Dwayland=false -Dcore_tests=false --werror --prefix /usr
- ninja -C build
- ninja -C build install
artifacts:
paths:
- build/meson-logs
test-mutter:
extends:
- .fdo.distribution-image@fedora
- .mutter.fedora:33
stage: test
dependencies:
- build-mutter
needs:
- build-mutter
variables:
XDG_RUNTIME_DIR: "$CI_PROJECT_DIR/runtime-dir"
GSETTINGS_SCHEMA_DIR: "$CI_PROJECT_DIR/build/data"
G_SLICE: "always-malloc"
MALLOC_CHECK_: "3"
NO_AT_BRIDGE: "1"
script:
- bash -x ./.gitlab-ci/run-tests.sh
artifacts:
expire_in: 1 day
reports:
junit: "build/${CI_JOB_NAME}-report.xml"
name: "mutter-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
when: always
paths:
- build
test-mutter-coverage:
extends:
- .fdo.distribution-image@fedora
- .mutter.fedora:33
stage: coverage
dependencies:
- test-mutter
needs:
- test-mutter
script:
- ninja -C build coverage
- cat build/meson-logs/coverage.txt
artifacts:
paths:
- build/meson-logs/coveragereport
coverage: '/^TOTAL.*\s+(\d+\%)$/'
can-build-gnome-shell:
extends:
- .fdo.distribution-image@fedora
- .mutter.fedora:33
stage: test
dependencies:
- build-mutter
needs:
- build-mutter
before_script:
- meson install --no-rebuild -C build
script:
- .gitlab-ci/checkout-gnome-shell.sh
- meson gnome-shell gnome-shell/build --prefix /usr -Dman=false
- ninja -C gnome-shell/build install