summaryrefslogtreecommitdiffstats
path: root/.gitlab-ci.yml
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--.gitlab-ci.yml266
1 files changed, 266 insertions, 0 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..ae37234
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,266 @@
+include:
+ - remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/80f87b3058efb75a1faae11826211375fba77e7f/templates/fedora.yml'
+
+variables:
+ FDO_DISTRIBUTION_TAG: latest
+ FDO_DISTRIBUTION_VERSION: 36
+ FDO_UPSTREAM_REPO: gnome/gnome-settings-daemon
+ # Expiry sets fdo.expires on the image
+ FEDORA_IMAGE: "$CI_REGISTRY/$FDO_UPSTREAM_REPO/fedora/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG"
+ FDO_EXPIRES_AFTER: 8w
+ FEDORA_DEPENDENCIES: >
+ @c-development
+ alsa-lib-devel
+ colord-devel
+ compiler-rt
+ cups-devel
+ fontconfig-devel
+ gcr-devel
+ geoclue2-devel geocode-glib-devel
+ gettext
+ git
+ glib2-devel
+ gnome-desktop3-devel
+ gnome-session
+ gobject-introspection
+ gobject-introspection-devel
+ gsettings-desktop-schemas-devel
+ gtk3-devel
+ lcms2-devel
+ lcov gcovr clang libasan libubsan libtsan
+ libcanberra-devel
+ libgtop2-devel
+ libgudev-devel
+ libgweather4-devel
+ libnotify-devel
+ librsvg2-devel
+ libwacom-devel
+ libX11-devel
+ libXi-devel
+ libXtst-devel
+ libXfixes-devel
+ llvm
+ mesa-dri-drivers
+ meson
+ ModemManager-glib-devel
+ NetworkManager-libnm-devel
+ nss-devel
+ perl-interpreter
+ polkit-devel
+ pulseaudio-libs-devel
+ python3-gobject python3-dbusmock
+ umockdev
+ upower-devel
+ wayland-devel
+ which
+ xorg-x11-drv-wacom-devel
+ xorg-x11-server-Xvfb
+ mutter
+
+image: "$FEDORA_IMAGE"
+
+stages:
+ - build
+ - test
+ - manual
+ - delivery
+
+.Log files: &log_files [./*.log, _build/meson-logs/]
+
+.Build logs: &save_build_logs
+ artifacts:
+ name: log
+ when: always
+ paths: *log_files
+
+.Git Untracked files: &save_untracked_files
+ artifacts:
+ name: untracked
+ when: always
+ paths: [$(pwd)]
+ expire_in: 3h30min
+
+.Show Info: &environment_information
+ build-aux/ci/ci-helper.sh "INFO" &&
+ build-aux/ci/ci-helper.sh "GIT_INFO"
+
+.Build procedure: &build_procedure
+ echo "== Building ==" &&
+ rm -rf _build/ &&
+ meson . _build ${BUILD_OPTS} -Dgcr3=true &&
+ ninja -C _build 2>&1 | tee compilation.log
+
+.Run Tests: &run_tests
+ echo "== Testing ==" &&
+ meson test -C _build --verbose --no-stdsplit
+
+##
+# Stage: Build
+#
+# Checks if GNOME Settings Daemon is properly building and installing. This is the
+# most important stage of the CI, and no MR should ever be merged if it breaks
+# any of them.
+##
+build:
+ <<: *save_untracked_files
+ tags: ['crun']
+ stage: build
+
+ script:
+ - *environment_information
+ - *build_procedure
+
+ - echo "== Installing =="
+ - ninja -C _build install
+
+ - echo "== Report =="
+ - build-aux/ci/ci-helper.sh "WARNINGS"
+
+ # Save all but git-related files
+ - rm -rf .git .gitignore .gitmodules
+
+ except:
+ variables:
+ - $CI_PIPELINE_SOURCE == "schedule"
+
+##
+# Stage: Test
+#
+# Runs the unit tests.
+##
+test:
+ <<: *save_build_logs
+ tags: ['crun']
+ stage: test
+
+ dependencies:
+ - build
+
+ script:
+ - *environment_information
+
+ - |
+ if [[ -n "${CI_COMMIT_TAG}" ]]; then
+ *run_tests
+
+ echo "== Distro Test =="
+ ninja dist -C _build
+ else
+ echo "== Testing =="
+ meson test -C _build --verbose --no-stdsplit
+ fi
+
+ except:
+ variables:
+ - $CI_PIPELINE_SOURCE == "schedule"
+ - $CI_COMMIT_TITLE =~ /^Update.*translation$/
+
+# Runs the coverage test.
+coverage:
+ <<: *save_build_logs
+ tags: ['crun']
+ stage: test
+ # Appears to be broken on Fedora Rawhide as of 2018-02-05
+ allow_failure: true
+ variables:
+ BUILD_OPTS: "-Db_coverage=true"
+ coverage: '/^Lines:.\d+.\d+.(\d+\.\d+\%)/'
+ only:
+ - master@GNOME/gnome-settings-daemon
+
+ script:
+ - *environment_information
+ - *build_procedure
+ - *run_tests
+
+ - ninja -C _build coverage-html
+
+ # Parse the report to get the coverage result
+ - |
+ echo == Coverage ==
+ sed -e 's/<[^>]*>//g' _build/meson-logs/coveragereport/index.html | tr -d ' \t' | grep -A3 -P '^Lines:$' | tr '\n' ' '; echo
+
+##
+# Stage: Delivery
+#
+# Publishes the Coverage Report generated above
+##
+pages:
+ stage: delivery
+ # Don't error in case coverage failed
+ allow_failure: true
+ dependencies:
+ - coverage
+ script:
+ - mv _build/meson-logs/coveragereport/ public/
+ artifacts:
+ paths:
+ - public
+ only:
+ - master@GNOME/gnome-settings-daemon
+
+##
+# Stage: Manual
+#
+# Runs the sanitizers [address, thread, undefined, and memory].
+##
+.sanitizer: &sanitizer
+ <<: *save_build_logs
+ tags: ['crun']
+ stage: manual
+ when: manual
+ script:
+ - *environment_information
+ - *build_procedure
+ - *run_tests
+
+ except:
+ variables:
+ - $CI_PIPELINE_SOURCE == "schedule"
+ - $CI_COMMIT_TITLE =~ /^Update.*translation$/
+
+#asan:
+# <<: *sanitizer
+# # ASAN requires debugging capabilities
+# tags: [ asan ]
+# variables:
+# BUILD_OPTS: "-Db_sanitize=address"
+
+tsan:
+ <<: *sanitizer
+ variables:
+ BUILD_OPTS: "-Db_sanitize=thread"
+
+ubsan:
+ <<: *sanitizer
+ variables:
+ BUILD_OPTS: "-Db_sanitize=undefined"
+
+msan:
+ <<: *sanitizer
+ variables:
+ BUILD_OPTS: "-Db_sanitize=memory -Db_lundef=false"
+ CC: "clang"
+
+#############################################
+# Create CI Docker Images #
+#############################################
+
+# See also https://gitlab.freedesktop.org/freedesktop/ci-templates
+container_fedora_build:
+ extends: .fdo.container-build@fedora
+ only:
+ variables:
+ - $CI_PIPELINE_SOURCE == "schedule" && $CRON_TASK == "BUILD_CI_IMAGES"
+ variables:
+ GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the image
+ FDO_FORCE_REBUILD: 1 # Force rebuilding the image
+ FDO_DISTRIBUTION_PACKAGES: $FEDORA_DEPENDENCIES
+ FDO_DISTRIBUTION_EXEC: |
+ git clone https://gitlab.gnome.org/GNOME/gsettings-desktop-schemas.git && \
+ cd gsettings-desktop-schemas && \
+ meson . _build --prefix=/usr && \
+ ninja -C _build && \
+ ninja -C _build install && \
+ cd ..
+