465af4b2d3
This allows us one less level of indentation of all the tests. It is not entirely true, the X11 backend test case script can run without it, but it isn't valuable enough to run without the native backend being enabled to complicate building. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3812>
761 lines
20 KiB
YAML
761 lines
20 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'
|
|
|
|
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: 40
|
|
BASE_TAG: '2024-06-19.1'
|
|
MUTTER_USER: 'meta-user'
|
|
FDO_DISTRIBUTION_PACKAGES:
|
|
asciidoc
|
|
clang
|
|
gcovr
|
|
gdm
|
|
gnome-shell
|
|
sassc
|
|
uncrustify
|
|
xorg-x11-server-Xvfb
|
|
mesa-dri-drivers
|
|
xorg-x11-proto-devel
|
|
qemu-system-x86-core
|
|
busybox
|
|
zenity
|
|
python3-dbusmock
|
|
"pkgconfig(libgcrypt)"
|
|
"pkgconfig(libdisplay-info)"
|
|
|
|
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
|
|
|
|
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.freedesktop.org/wayland/wayland.git \
|
|
1.23.0
|
|
|
|
./.gitlab-ci/install-meson-project.sh \
|
|
https://gitlab.gnome.org/GNOME/gi-docgen.git \
|
|
main
|
|
|
|
./.gitlab-ci/install-meson-project.sh \
|
|
https://gitlab.freedesktop.org/wayland/wayland-protocols.git \
|
|
1.36
|
|
|
|
./.gitlab-ci/install-meson-project.sh \
|
|
https://gitlab.gnome.org/GNOME/gsettings-desktop-schemas.git \
|
|
master
|
|
|
|
rpm -e --nodeps gnome-bluetooth-libs-devel \
|
|
mutter mutter-devel \
|
|
gnome-shell \
|
|
gtk3
|
|
|
|
# Contains fixes needed for tests not included in 3.24.33
|
|
./.gitlab-ci/install-meson-project.sh \
|
|
https://gitlab.gnome.org/GNOME/gtk.git \
|
|
gtk-3-24 46fe3224dd771b91e6976d5a632b452e2179a4f0
|
|
|
|
# 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
|
|
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-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
|
|
-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='\.\./clutter/'
|
|
--filter='\.\./cogl/'
|
|
--filter='\.\./mtk/'
|
|
--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
|
|
--launch=pipewire
|
|
--launch=wireplumber
|
|
--
|
|
meson test
|
|
-C build
|
|
--setup plain
|
|
--no-suite 'mutter/kvm'
|
|
--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
|
|
--launch=pipewire
|
|
--launch=wireplumber
|
|
--
|
|
meson dist -C build
|
|
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
|
|
|
|
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/{cally/cally,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")
|