mutter/.gitlab-ci.yml
Florian Müllner abd8032fe5 ci: Include gdm in image
gnome-shell depends on gdm's client library at runtime, but the
new pipeline-built image no longer provides it.

Add it back, but built it from source instead of using the Fedora
package, so we don't draw in all of gdm's runtime dependencies
(which includes a full GNOME session including gnome-shell).

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1590>
2020-11-20 20:19:50 +01:00

216 lines
5.5 KiB
YAML

include:
- remote: "https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/97556201e6e0e30554ee93249f5287be826be718/templates/fedora.yml"
- remote: "https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/97556201e6e0e30554ee93249f5287be826be718/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'
.only_default: &only_default
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'
build-fedora-container:
extends:
- .fdo.container-build@fedora@x86_64
- .mutter.fedora:33
stage: prepare
needs:
- check-commit-log
- check-merge-request
<<: *only_default
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
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
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