8e2c8611f6
The gtk3 package in F41 includes the necessary bugfixes, so no need
for our own build.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4068>
(cherry picked from commit c215faaeef
)
822 lines
22 KiB
YAML
822 lines
22 KiB
YAML
include:
|
|
- remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/145b1bc7ef1702d2bd71584010d7113c6786a506/templates/fedora.yml'
|
|
- remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/34f4ade99434043f88e164933f570301fd18b125/templates/ci-fairy.yml'
|
|
- project: 'Infrastructure/openshift-images/gnome-release-service'
|
|
file: '/ci-templates/release-module.yml'
|
|
- component: gitlab.gnome.org/GNOME/citemplates/gnomeos-build-sysext@1.0.0-alpha.1
|
|
inputs:
|
|
meson-options:
|
|
-Dxwayland_initfd=enabled
|
|
-Dprofiler=true
|
|
|
|
build-sysext:
|
|
before_script:
|
|
- .gitlab-ci/install-gnomeos-sysext-dependencies.sh $CI_PROJECT_DIR/extension
|
|
# x86_64_v2 runners hang on pulling the docker image. This should be removed
|
|
# when the runners are all updated.
|
|
# https://gitlab.gnome.org/Infrastructure/Infrastructure/-/issues/1665
|
|
tags:
|
|
- x86_64_v3
|
|
|
|
stages:
|
|
- review
|
|
- prepare
|
|
- code-review
|
|
- build
|
|
- test
|
|
- analyze
|
|
- docs
|
|
- deploy
|
|
|
|
variables:
|
|
FDO_UPSTREAM_REPO: GNOME/mutter
|
|
|
|
.skip-git-clone:
|
|
variables:
|
|
GIT_STRATEGY: none
|
|
|
|
.mutter.git-clone:
|
|
extends:
|
|
- .skip-git-clone
|
|
variables:
|
|
MUTTER_CLONE_PATH: $CI_BUILDS_DIR/$CI_PROJECT_PATH
|
|
MUTTER_CLONE_DEPTH: 1
|
|
before_script: |
|
|
if [ -n "$MUTTER_CLONE_PATH" ]; then
|
|
set -x
|
|
uri="$CI_REPOSITORY_URL"
|
|
if [ -n "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" ]; then
|
|
uri="$CI_MERGE_REQUEST_SOURCE_PROJECT_URL.git"
|
|
branch="$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME"
|
|
elif [ -n "$CI_COMMIT_TAG" ]; then
|
|
branch="$CI_COMMIT_TAG"
|
|
elif [ -n "$CI_COMMIT_BRANCH" ]; then
|
|
branch="$CI_COMMIT_BRANCH"
|
|
else
|
|
branch="$CI_DEFAULT_BRANCH"
|
|
fi
|
|
if [ ! -d "$MUTTER_CLONE_PATH" ] || [ -z "$(ls -A "$MUTTER_CLONE_PATH")" ]; then
|
|
git clone --depth $MUTTER_CLONE_DEPTH "$uri" "$MUTTER_CLONE_PATH" -b "$branch"
|
|
elif [ ! -d "$MUTTER_CLONE_PATH/.git" ]; then
|
|
git clone --bare --depth $MUTTER_CLONE_DEPTH "$uri" "$MUTTER_CLONE_PATH/.git" -b "$branch"
|
|
if git -C "$MUTTER_CLONE_PATH" config --unset core.bare; then
|
|
git -C "$MUTTER_CLONE_PATH" checkout
|
|
else
|
|
# For some weird reasons sometimes the fast-path could fail with
|
|
# "fatal: not in a git directory" error, so handle it manually
|
|
tmpdir=$(mktemp --directory --tmpdir mutter-XXXXXX)
|
|
mkdir "$tmpdir/repo"
|
|
mv "$MUTTER_CLONE_PATH/.git" "$tmpdir/repo/"
|
|
git clone "$tmpdir/repo" "$tmpdir/src"
|
|
mv "$tmpdir"/src/* "$tmpdir"/src/.* "$MUTTER_CLONE_PATH"
|
|
rm -r "$tmpdir/repo"
|
|
rm -rv "$tmpdir"
|
|
fi
|
|
fi
|
|
set +x
|
|
fi
|
|
|
|
.mutter.skip-git-clone:
|
|
extends:
|
|
- .skip-git-clone
|
|
variables:
|
|
MUTTER_CLONE_PATH: ''
|
|
|
|
.mutter.run-as-user:
|
|
image:
|
|
name: ${FDO_DISTRIBUTION_IMAGE}
|
|
entrypoint:
|
|
- 'runuser'
|
|
- '-u'
|
|
- !reference [.mutter.fedora@common, variables, MUTTER_USER]
|
|
- '--'
|
|
|
|
.mutter.distribution-image:
|
|
extends:
|
|
- .fdo.distribution-image@fedora
|
|
- .mutter.run-as-user
|
|
|
|
.mutter.fedora@common:
|
|
extends:
|
|
- .skip-git-clone
|
|
variables:
|
|
FDO_DISTRIBUTION_VERSION: 41
|
|
BASE_TAG: '2024-09-20.2'
|
|
MUTTER_USER: 'meta-user'
|
|
FDO_DISTRIBUTION_PACKAGES:
|
|
clang
|
|
gcovr
|
|
gdm
|
|
gnome-shell
|
|
python3-docutils
|
|
sassc
|
|
uncrustify
|
|
xorg-x11-server-Xvfb
|
|
mesa-dri-drivers
|
|
mesa-vulkan-drivers
|
|
xorg-x11-proto-devel
|
|
qemu-system-x86-core
|
|
busybox
|
|
zenity
|
|
python3-dbusmock
|
|
gnome-desktop-testing
|
|
|
|
FDO_DISTRIBUTION_EXEC: |
|
|
set -e
|
|
|
|
# Create $MUTTER_USER
|
|
useradd -u 9999 -b /opt/mutter -ms /bin/bash $MUTTER_USER
|
|
|
|
# Enable sudo for $MUTTER_USER
|
|
echo "%$MUTTER_USER ALL = (ALL) NOPASSWD: ALL" > /etc/sudoers.d/99_mutter-user
|
|
|
|
# Drop problematic vulkan driver that interferes with CI;
|
|
# see https://gitlab.gnome.org/GNOME/gtk/-/commit/7814d1fd75911
|
|
rm /usr/share/vulkan/icd.d/powervr_mesa_icd.x86_64.json
|
|
|
|
dnf install -y 'dnf-command(builddep)'
|
|
|
|
dnf builddep -y mutter --setopt=install_weak_deps=False
|
|
dnf builddep -y gnome-shell --setopt=install_weak_deps=False
|
|
dnf builddep -y kernel --setopt=install_weak_deps=False
|
|
dnf builddep -y gi-docgen --setopt=install_weak_deps=False
|
|
dnf builddep -y wayland --setopt=install_weak_deps=False
|
|
|
|
./.gitlab-ci/install-meson-project.sh \
|
|
https://gitlab.gnome.org/jadahl/catch.git \
|
|
main
|
|
|
|
./.gitlab-ci/install-meson-project.sh \
|
|
https://gitlab.gnome.org/GNOME/gi-docgen.git \
|
|
main
|
|
|
|
./.gitlab-ci/install-common-dependencies.sh
|
|
|
|
rpm -e --nodeps gnome-bluetooth-libs-devel \
|
|
mutter mutter-devel \
|
|
gnome-shell \
|
|
$(NULL)
|
|
|
|
# Work-around for podman-push aborting on permission issue
|
|
# https://gitlab.gnome.org/Infrastructure/Infrastructure/-/issues/1247
|
|
rm -rf /etc/pki/pesign/
|
|
chmod -R a+rX /opt/mutter/$MUTTER_USER
|
|
chmod -R a+rX /var/lib/gdm
|
|
|
|
# Ensure that we mark the project clone dir as safe directory
|
|
git config --system --add safe.directory "$CI_PROJECT_DIR"
|
|
|
|
if [[ x"$(uname -m )" = "xx86_64" ]] ; then
|
|
# deprecated header no longer included in openssl-devel
|
|
dnf install -y openssl-devel-engine
|
|
|
|
if [ -n "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" ]; then
|
|
git clone --depth $MUTTER_CLONE_DEPTH \
|
|
$CI_MERGE_REQUEST_SOURCE_PROJECT_URL.git mutter-src \
|
|
-b "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME"
|
|
elif [ -n "$CI_COMMIT_BRANCH" ]; then
|
|
git clone --depth $MUTTER_CLONE_DEPTH \
|
|
$CI_REPOSITORY_URL mutter-src -b "$CI_COMMIT_BRANCH"
|
|
else
|
|
git clone --depth $MUTTER_CLONE_DEPTH $CI_REPOSITORY_URL mutter-src
|
|
fi
|
|
meson setup build mutter-src -Dkvm_tests=true
|
|
ninja -C build src/tests/kvm/bzImage
|
|
mkdir -p /opt/mutter
|
|
cp build/src/tests/kvm/bzImage /opt/mutter/bzImage
|
|
|
|
dnf install -y python3-argcomplete
|
|
|
|
git clone https://github.com/arighi/virtme-ng.git
|
|
cd virtme-ng
|
|
git fetch --tags
|
|
git checkout v1.8
|
|
./setup.py install --prefix=/usr
|
|
cd ..
|
|
rm -rf virtme-ng
|
|
rm -rf build mutter-src
|
|
fi
|
|
retry:
|
|
max: 2
|
|
when:
|
|
- 'always'
|
|
|
|
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'
|
|
|
|
.mutter.fedora@x86_64:
|
|
extends:
|
|
- .mutter.fedora@common
|
|
- .mutter.git-clone
|
|
variables:
|
|
FDO_DISTRIBUTION_TAG: "x86_64-${BASE_TAG}"
|
|
|
|
.mutter.fedora@aarch64:
|
|
extends:
|
|
- .mutter.fedora@common
|
|
- .mutter.git-clone
|
|
variables:
|
|
FDO_DISTRIBUTION_TAG: "aarch64-${BASE_TAG}"
|
|
tags:
|
|
- aarch64
|
|
|
|
workflow:
|
|
rules:
|
|
# Allow to switch from branch pipelines to MR pipelines seamlessly
|
|
# https://docs.gitlab.com/ee/ci/jobs/job_control.html#avoid-duplicate-pipelines
|
|
- if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS && $CI_PIPELINE_SOURCE == "push"
|
|
when: never
|
|
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
|
# Don't trigger a branch pipeline if there is an open MR
|
|
- if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
|
|
when: never
|
|
- if: '$CI_COMMIT_BRANCH'
|
|
- if: '$CI_COMMIT_TAG'
|
|
|
|
.pipeline-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-]+$/'
|
|
# Avoid catchall `when: manual` rule which might
|
|
# cause duplicate pipelines to be triggered.
|
|
# https://docs.gitlab.com/ee/ci/jobs/job_control.html#avoid-duplicate-pipelines
|
|
#
|
|
# Also make it so pipelines without MR need to be started
|
|
# manually, since their state will most likely be WIP
|
|
- if: '$CI_COMMIT_BRANCH'
|
|
when: 'manual'
|
|
|
|
.only-merge-requests:
|
|
rules:
|
|
- if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME =~ /^$/'
|
|
when: never
|
|
- if: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME
|
|
when: on_success
|
|
|
|
repo-sanity:
|
|
extends:
|
|
- .fdo.ci-fairy
|
|
stage: review
|
|
variables:
|
|
GIT_DEPTH: "1"
|
|
script:
|
|
- >
|
|
if [[ -z "$CI_REGISTRY_IMAGE" ]] ;
|
|
then
|
|
.gitlab-ci/simple-junit-report.sh check-junit-report.xml \
|
|
repo-sanity "The container registry should be enabled in the project general settings panel at $CI_PROJECT_URL/edit" ;
|
|
exit 1 ;
|
|
fi
|
|
artifacts:
|
|
expire_in: 1 week
|
|
paths:
|
|
- check-junit-report.xml
|
|
reports:
|
|
junit: check-junit-report.xml
|
|
rules:
|
|
- !reference [.only-merge-requests, rules]
|
|
|
|
check-commit-log:
|
|
extends:
|
|
- .fdo.ci-fairy
|
|
stage: review
|
|
variables:
|
|
GIT_DEPTH: "100"
|
|
script:
|
|
ci-fairy check-commits --junit-xml=commit-message-junit-report.xml
|
|
artifacts:
|
|
expire_in: 1 week
|
|
paths:
|
|
- commit-message-junit-report.xml
|
|
reports:
|
|
junit: commit-message-junit-report.xml
|
|
rules:
|
|
- !reference [.only-merge-requests, rules]
|
|
|
|
check-merge-request:
|
|
extends:
|
|
- .fdo.ci-fairy
|
|
- .skip-git-clone
|
|
stage: review
|
|
script:
|
|
ci-fairy check-merge-request --require-allow-collaboration --junit-xml=check-merge-request-report.xml
|
|
artifacts:
|
|
expire_in: 1 week
|
|
paths:
|
|
- check-merge-request-report.xml
|
|
reports:
|
|
junit: check-merge-request-report.xml
|
|
rules:
|
|
- !reference [.only-merge-requests, rules]
|
|
|
|
build-fedora-container@x86_64:
|
|
extends:
|
|
- .fdo.container-build@fedora@x86_64
|
|
- .mutter.fedora@x86_64
|
|
- .mutter.skip-git-clone
|
|
stage: prepare
|
|
rules:
|
|
- !reference [.pipeline-guard, rules]
|
|
|
|
build-fedora-container@aarch64:
|
|
extends:
|
|
- .fdo.container-build@fedora@aarch64
|
|
- .mutter.fedora@aarch64
|
|
- .mutter.skip-git-clone
|
|
stage: prepare
|
|
rules:
|
|
- !reference [.pipeline-guard, rules]
|
|
when: manual
|
|
|
|
check-code-style:
|
|
extends:
|
|
- .mutter.distribution-image
|
|
- .mutter.fedora@x86_64
|
|
variables:
|
|
MUTTER_CLONE_DEPTH: 200
|
|
stage: code-review
|
|
needs:
|
|
- job: build-fedora-container@x86_64
|
|
artifacts: false
|
|
script:
|
|
git config --global --add safe.directory $CI_PROJECT_DIR ;
|
|
git remote add target $CI_MERGE_REQUEST_PROJECT_URL.git ;
|
|
git fetch target $CI_MERGE_REQUEST_TARGET_BRANCH_NAME ;
|
|
export common_parent_sha=$(diff --old-line-format='' --new-line-format='' <(git rev-list --first-parent "target/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME") <(git rev-list --first-parent HEAD) | head -1) ;
|
|
python3 -u ./check-style.py --dry-run --sha $common_parent_sha ;
|
|
allow_failure: true
|
|
rules:
|
|
- !reference [.only-merge-requests, rules]
|
|
|
|
.build-mutter-base:
|
|
variables:
|
|
BASE_MESON_OPTIONS:
|
|
-Degl_device=true
|
|
-Dwayland_eglstream=true
|
|
-Dcatch=true
|
|
-Dlibdisplay_info=enabled
|
|
|
|
.build-mutter:
|
|
extends:
|
|
- .mutter.distribution-image
|
|
- .build-mutter-base
|
|
stage: build
|
|
script:
|
|
- meson setup . build
|
|
--prefix /usr
|
|
--werror
|
|
--fatal-meson-warnings
|
|
--warnlevel 2
|
|
-Dbuildtype=debugoptimized
|
|
-Db_coverage=true
|
|
-Ddocs=true
|
|
$BASE_MESON_OPTIONS
|
|
$EXTRA_MESON_OPTIONS
|
|
- meson compile -C build
|
|
- sudo meson install --dry-run -C build
|
|
artifacts:
|
|
expire_in: 1 day
|
|
paths:
|
|
- build
|
|
|
|
build-mutter@x86_64:
|
|
variables:
|
|
EXTRA_MESON_OPTIONS:
|
|
-Dkvm_tests=true
|
|
-Dkvm_kernel_image=/opt/mutter/bzImage
|
|
extends:
|
|
- .build-mutter
|
|
- .mutter.fedora@x86_64
|
|
needs:
|
|
- job: build-fedora-container@x86_64
|
|
artifacts: false
|
|
|
|
build-mutter@aarch64:
|
|
extends:
|
|
- .build-mutter
|
|
- .mutter.fedora@aarch64
|
|
needs:
|
|
- job: build-fedora-container@aarch64
|
|
artifacts: false
|
|
when: manual
|
|
|
|
build-without-opengl-and-glx@x86_64:
|
|
extends:
|
|
- .mutter.distribution-image
|
|
- .mutter.fedora@x86_64
|
|
stage: build
|
|
needs:
|
|
- job: build-fedora-container@x86_64
|
|
artifacts: false
|
|
script:
|
|
- meson setup . build --werror --prefix /usr
|
|
-Dbuildtype=debugoptimized
|
|
-Dopengl=false
|
|
-Dglx=false
|
|
-Degl_device=true
|
|
-Dwayland_eglstream=true
|
|
-Dintrospection=false
|
|
- meson compile -C build
|
|
- sudo meson install --no-rebuild -C build
|
|
artifacts:
|
|
paths:
|
|
- build/meson-logs
|
|
|
|
build-without-native-backend-and-wayland@x86_64:
|
|
extends:
|
|
- .mutter.distribution-image
|
|
- .mutter.fedora@x86_64
|
|
stage: build
|
|
needs:
|
|
- job: build-fedora-container@x86_64
|
|
artifacts: false
|
|
script:
|
|
- meson setup . build --werror --prefix /usr
|
|
-Dbuildtype=debugoptimized
|
|
-Dnative_backend=false
|
|
-Dudev=false
|
|
-Dwayland=false
|
|
-Dxwayland=false
|
|
-Dtests=disabled
|
|
-Dintrospection=false
|
|
- meson compile -C build
|
|
- sudo meson install --no-rebuild -C build
|
|
artifacts:
|
|
paths:
|
|
- build/meson-logs
|
|
|
|
build-wayland-xwayland@x86_64:
|
|
extends:
|
|
- .mutter.distribution-image
|
|
- .mutter.fedora@x86_64
|
|
stage: build
|
|
needs:
|
|
- job: build-fedora-container@x86_64
|
|
artifacts: false
|
|
script:
|
|
- meson setup . build --werror --prefix /usr
|
|
-Dbuildtype=debugoptimized
|
|
-Dwayland=true
|
|
-Dxwayland=true
|
|
-Dx11=false
|
|
-Dtests=disabled
|
|
-Dintrospection=false
|
|
- meson compile -C build
|
|
- sudo meson install --no-rebuild -C build
|
|
artifacts:
|
|
paths:
|
|
- build/meson-logs
|
|
|
|
build-wayland-only@x86_64:
|
|
extends:
|
|
- .mutter.distribution-image
|
|
- .mutter.fedora@x86_64
|
|
stage: build
|
|
needs:
|
|
- job: build-fedora-container@x86_64
|
|
artifacts: false
|
|
script:
|
|
- meson setup . build --werror --prefix /usr
|
|
-Dbuildtype=debugoptimized
|
|
-Dwayland=true
|
|
-Dxwayland=false
|
|
-Dx11=false
|
|
-Dtests=disabled
|
|
-Dintrospection=false
|
|
- meson compile -C build
|
|
- sudo meson install --no-rebuild -C build
|
|
artifacts:
|
|
paths:
|
|
- build/meson-logs
|
|
|
|
.test-setup:
|
|
variables:
|
|
GSETTINGS_SCHEMA_DIR: "$CI_PROJECT_DIR/build/data"
|
|
MUTTER_DEBUG_DUMMY_MODE_SPECS: "800x600@10.0"
|
|
PIPEWIRE_DEBUG: 2
|
|
PIPEWIRE_LOG: "$CI_PROJECT_DIR/build/meson-logs/pipewire.log"
|
|
XVFB_SERVER_ARGS: "+iglx -noreset"
|
|
G_SLICE: "always-malloc"
|
|
MALLOC_CHECK_: "3"
|
|
NO_AT_BRIDGE: "1"
|
|
GTK_A11Y: "none"
|
|
before_script:
|
|
- !reference [.mutter.git-clone, before_script]
|
|
|
|
.test-mutter-base:
|
|
extends:
|
|
- .mutter.distribution-image
|
|
- .test-setup
|
|
stage: test
|
|
after_script:
|
|
- pushd build
|
|
- gcovr --root=..
|
|
--filter='\.\./src/'
|
|
--filter='\.\./subprojects/'
|
|
--filter='\.\./clutter/'
|
|
--filter='\.\./cogl/'
|
|
--filter='\.\./mtk/'
|
|
--gcov-ignore-errors=no_working_dir_found
|
|
--exclude='\.\./build/.*\.[ch]$' --exclude='.*/tests/.*\.[ch]$'
|
|
--json --output=../coverage-${CI_JOB_NAME}.json
|
|
- popd
|
|
artifacts:
|
|
expire_in: 1 day
|
|
name: "mutter-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
|
|
when: always
|
|
paths:
|
|
- build
|
|
- coverage-*.json
|
|
|
|
.test-mutter:
|
|
extends:
|
|
- .mutter.distribution-image
|
|
- .test-mutter-base
|
|
script:
|
|
- glib-compile-schemas $GSETTINGS_SCHEMA_DIR
|
|
- mkdir -m 1777 /tmp/.X11-unix
|
|
- ./src/tests/meta-dbus-runner.py
|
|
--
|
|
meson test
|
|
-C build
|
|
--setup plain
|
|
--no-suite 'mutter/kvm'
|
|
--no-suite 'gvdb'
|
|
--no-rebuild
|
|
--timeout-multiplier 10
|
|
--print-errorlogs
|
|
artifacts:
|
|
reports:
|
|
junit: "build/meson-logs/testlog-plain.junit.xml"
|
|
|
|
test-mutter@x86_64:
|
|
extends:
|
|
- .mutter.fedora@x86_64
|
|
- .test-mutter
|
|
tags:
|
|
- asan
|
|
needs:
|
|
- build-mutter@x86_64
|
|
|
|
test-mutter-kvm@x86_64:
|
|
extends:
|
|
- .mutter.fedora@x86_64
|
|
- .test-mutter-base
|
|
tags:
|
|
- kvm
|
|
script:
|
|
- meson test -C build
|
|
--no-rebuild
|
|
--timeout-multiplier 10
|
|
--setup plain
|
|
--suite 'mutter/kvm'
|
|
--print-errorlogs
|
|
needs:
|
|
- build-mutter@x86_64
|
|
artifacts:
|
|
reports:
|
|
junit: "build/meson-logs/testlog-plain.junit.xml"
|
|
|
|
test-mutter@aarch64:
|
|
extends:
|
|
- .mutter.fedora@aarch64
|
|
- .test-mutter
|
|
tags:
|
|
- asan-aarch64
|
|
needs:
|
|
- build-mutter@aarch64
|
|
when: manual
|
|
|
|
coverage:
|
|
extends:
|
|
- .mutter.distribution-image
|
|
- .mutter.fedora@x86_64
|
|
stage: analyze
|
|
script:
|
|
- mkdir coveragereport
|
|
- gcovr --add-tracefile 'coverage-*.json'
|
|
--html-details --print-summary --output coveragereport/index.html
|
|
- gcovr --add-tracefile 'coverage-*.json'
|
|
--xml --output coveragereport/coverage.xml
|
|
artifacts:
|
|
expose_as: 'Coverage Report'
|
|
paths:
|
|
- coveragereport
|
|
- coveragereport/index.html
|
|
reports:
|
|
coverage_report:
|
|
coverage_format: cobertura
|
|
# TODO: we may need to split this file once it will reach the
|
|
# gitlab limit size of 10M, or it will stop working:
|
|
# https://gitlab.com/gitlab-org/gitlab/-/issues/328772
|
|
path: coveragereport/coverage.xml
|
|
coverage: '/^lines: (\d+\.\d+\%)/'
|
|
needs:
|
|
- test-mutter@x86_64
|
|
# - test-mutter@aarch64
|
|
- test-mutter-kvm@x86_64
|
|
|
|
can-run-gnome-shell@x86_64:
|
|
extends:
|
|
- .mutter.distribution-image
|
|
- .mutter.fedora@x86_64
|
|
- .test-setup
|
|
stage: test
|
|
needs:
|
|
- build-mutter@x86_64
|
|
before_script:
|
|
- !reference [.mutter.fedora@x86_64, before_script]
|
|
- sudo meson install --no-rebuild -C build
|
|
script:
|
|
- .gitlab-ci/checkout-gnome-shell.sh
|
|
- meson setup gnome-shell gnome-shell/build --prefix /usr -Dbuildtype=debugoptimized -Dman=false --werror --fatal-meson-warnings
|
|
- sudo meson install -C gnome-shell/build
|
|
- mkdir -m 1777 /tmp/.X11-unix
|
|
- dbus-run-session -- meson test -C gnome-shell/build --no-rebuild --timeout-multiplier 5
|
|
artifacts:
|
|
expire_in: 7 day
|
|
name: "mutter-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
|
|
when: on_failure
|
|
paths:
|
|
- gnome-shell/build/meson-logs
|
|
|
|
test-mutter-coverity:
|
|
rules:
|
|
- if: '$CI_PIPELINE_SOURCE == "schedule" && $MUTTER_SCHEDULED_JOB == "coverity"'
|
|
when: on_success
|
|
- if: '$CI_COMMIT_BRANCH'
|
|
when: 'manual'
|
|
extends:
|
|
- .mutter.distribution-image
|
|
- .mutter.fedora@x86_64
|
|
needs:
|
|
- job: build-fedora-container@x86_64
|
|
artifacts: false
|
|
stage: analyze
|
|
allow_failure: true
|
|
script:
|
|
- .gitlab-ci/download-coverity-tarball.sh
|
|
- CC=clang meson setup coverity-build -Dprofiler=false
|
|
- ./coverity/cov-analysis-linux64-*/bin/cov-build --dir cov-int meson compile -C coverity-build
|
|
- tar czf cov-int.tar.gz cov-int
|
|
- curl https://scan.coverity.com/builds?project=mutter
|
|
--form token=$COVERITY_TOKEN --form email=carlosg@gnome.org
|
|
--form file=@cov-int.tar.gz --form version="`git describe --tags`"
|
|
--form description="GitLab CI build"
|
|
cache:
|
|
key: coverity-tarball
|
|
paths:
|
|
- coverity
|
|
|
|
distinfo:
|
|
extends:
|
|
- .fdo.distribution-image@fedora
|
|
- .mutter.fedora@x86_64
|
|
- .build-mutter-base
|
|
- .test-setup
|
|
stage: deploy
|
|
needs:
|
|
- job: build-fedora-container@x86_64
|
|
artifacts: false
|
|
script:
|
|
- meson setup . build
|
|
- .gitlab-ci/export-artifact-path build > dist.env
|
|
artifacts:
|
|
reports:
|
|
dotenv: dist.env
|
|
paths:
|
|
- dist.env
|
|
rules:
|
|
- if: '$CI_COMMIT_TAG'
|
|
|
|
dist-mutter:
|
|
extends:
|
|
- .fdo.distribution-image@fedora
|
|
- .mutter.fedora@x86_64
|
|
- .build-mutter-base
|
|
- .test-setup
|
|
stage: deploy
|
|
needs:
|
|
- job: build-fedora-container@x86_64
|
|
artifacts: false
|
|
script:
|
|
- meson setup . build --werror --prefix /usr
|
|
-Dbuildtype=debugoptimized
|
|
- glib-compile-schemas $GSETTINGS_SCHEMA_DIR
|
|
- mkdir -m 1777 /tmp/.X11-unix
|
|
- ./src/tests/meta-dbus-runner.py
|
|
--
|
|
meson dist -C build --include-subprojects
|
|
artifacts:
|
|
expire_in: 7 day
|
|
name: "mutter-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
|
|
when: always
|
|
paths:
|
|
- build/meson-private/dist-build/meson-logs
|
|
rules:
|
|
- if: '$CI_PIPELINE_SOURCE != "merge_request_event"'
|
|
when: manual
|
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
changes:
|
|
- "**/meson.build"
|
|
- meson/*
|
|
when: on_success
|
|
- if: '$GITLAB_USER_LOGIN == "marge-bot"'
|
|
when: on_success
|
|
- if: '$CI_MERGE_REQUEST_ASSIGNEES == "marge-bot"'
|
|
when: on_success
|
|
|
|
installed-tests-mutter@x86_64:
|
|
extends:
|
|
- .fdo.distribution-image@fedora
|
|
- .mutter.fedora@x86_64
|
|
- .build-mutter-base
|
|
- .test-setup
|
|
stage: deploy
|
|
needs:
|
|
- build-mutter@x86_64
|
|
script:
|
|
- meson install -C build --no-rebuild
|
|
- mkdir -m 1777 /tmp/.X11-unix
|
|
- mkdir installed-tests-logs
|
|
- gnome-desktop-testing-runner -L installed-tests-logs mutter
|
|
artifacts:
|
|
expire_in: 7 day
|
|
name: "mutter-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
|
|
when: always
|
|
paths:
|
|
- installed-tests-logs
|
|
rules:
|
|
- if: '$CI_PIPELINE_SOURCE != "merge_request_event"'
|
|
when: manual
|
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
changes:
|
|
- "**/meson.build"
|
|
- meson/*
|
|
when: on_success
|
|
- if: '$GITLAB_USER_LOGIN == "marge-bot"'
|
|
when: on_success
|
|
- if: '$CI_MERGE_REQUEST_ASSIGNEES == "marge-bot"'
|
|
when: on_success
|
|
|
|
dist-mutter-tarball:
|
|
extends: dist-mutter
|
|
needs:
|
|
- distinfo
|
|
artifacts:
|
|
expose_as: 'Get tarball here'
|
|
paths:
|
|
- $TARBALL_ARTIFACT_PATH
|
|
reports:
|
|
dotenv: dist.env
|
|
rules:
|
|
- if: '$CI_COMMIT_TAG'
|
|
|
|
release-module:
|
|
stage: deploy
|
|
needs:
|
|
- dist-mutter-tarball
|
|
extends: .release-module
|
|
rules:
|
|
- if: '$CI_COMMIT_TAG'
|
|
|
|
reference:
|
|
extends:
|
|
- .mutter.distribution-image
|
|
- .mutter.fedora@x86_64
|
|
stage: docs
|
|
needs:
|
|
- build-mutter@x86_64
|
|
script:
|
|
- mkdir references
|
|
- cp -r doc/website/* ./references
|
|
- mv build/doc/reference/{clutter/clutter,cogl/cogl,cogl-pango/cogl-pango,meta/meta,mtk/mtk} references/
|
|
artifacts:
|
|
expire_in: 1 week
|
|
expose_as: 'Documentation'
|
|
paths:
|
|
- references/
|
|
|
|
pages:
|
|
stage: deploy
|
|
needs: ['reference']
|
|
extends:
|
|
- .skip-git-clone
|
|
script:
|
|
- mv references public/
|
|
artifacts:
|
|
paths:
|
|
- public
|
|
rules:
|
|
- if: ($CI_DEFAULT_BRANCH == $CI_COMMIT_BRANCH && $CI_PROJECT_NAMESPACE == "GNOME")
|