For the changes in gnome-online-accounts!253. This can be reverted when gnome-online-accounts.47.alpha is out.
387 lines
9.9 KiB
YAML
387 lines
9.9 KiB
YAML
include:
|
|
- remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/145b1bc7ef1702d2bd71584010d7113c6786a506/templates/fedora.yml'
|
|
|
|
variables:
|
|
FDO_UPSTREAM_REPO: gnome/gnome-control-center
|
|
|
|
stages:
|
|
- prepare
|
|
- build
|
|
- test
|
|
- manual
|
|
- deploy
|
|
|
|
.Build Logs: &build_logs
|
|
name: build_logs
|
|
when: always
|
|
paths:
|
|
- ./*.log
|
|
- _build/meson-logs/
|
|
|
|
.Build Output: &build_output
|
|
artifacts:
|
|
name: build_output
|
|
when: always
|
|
paths:
|
|
- ./*.log
|
|
- _build/
|
|
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 ==" &&
|
|
meson setup _build ${BUILD_OPTS} -Dprofile=development &&
|
|
meson compile -C _build 2>&1 | tee compilation.log
|
|
|
|
.Run Tests: &run_tests
|
|
export GSK_RENDERER=ngl &&
|
|
echo "== Testing ==" &&
|
|
meson test -C _build --verbose --no-stdsplit --no-rebuild
|
|
|
|
.fedora.container.common:
|
|
variables:
|
|
# When branching a stable release, change 'main' to the
|
|
# release branch name to ensure that a new image will
|
|
# be created, tailored for the stable branch.
|
|
# Should probably also switch away from 'rawhide',
|
|
# to stable fedora branch as well.
|
|
BRANCH_NAME: 'main'
|
|
CONTAINER_TAG: '2024-06-27.0'
|
|
FEDORA_VERSION: rawhide
|
|
# Derive FDO variables from this automatically.
|
|
# DO NOT edit, instead change the variables above
|
|
FDO_REPO_SUFFIX: '${BRANCH_NAME}'
|
|
FDO_DISTRIBUTION_TAG: '${CONTAINER_TAG}-fedora-${FEDORA_VERSION}'
|
|
FDO_DISTRIBUTION_VERSION: '${FEDORA_VERSION}'
|
|
|
|
#############################################
|
|
# Create CI Docker Images #
|
|
#############################################
|
|
|
|
# See also https://gitlab.freedesktop.org/freedesktop/ci-templates
|
|
build.container.fedora@x86_64:
|
|
extends:
|
|
- '.fdo.container-build@fedora'
|
|
- '.fedora.container.common'
|
|
stage: 'prepare'
|
|
variables:
|
|
# no need to pull the whole tree for rebuilding the image
|
|
GIT_STRATEGY: none
|
|
# Expiry sets fdo.expires on the image
|
|
FDO_EXPIRES_AFTER: 8w
|
|
# NOTES:
|
|
# - most packages are needed for testing
|
|
# - glibc-langpack-en is needed for sorting in run-style-check-diff.sh
|
|
# - libsass-devel, sassc are often needed for building libadwaita, gtk, etc.
|
|
FDO_DISTRIBUTION_PACKAGES: >-
|
|
dnf5-plugins
|
|
git
|
|
llvm clang libasan libtsan libubsan compiler-rt gcovr
|
|
meson
|
|
clang-tools-extra
|
|
glibc-langpack-en
|
|
python3-dbusmock
|
|
xorg-x11-server-Xvfb
|
|
mesa-dri-drivers
|
|
libsass-devel sassc
|
|
FDO_DISTRIBUTION_EXEC: |-
|
|
dnf builddep -y gnome-control-center && \
|
|
dnf builddep -y gsettings-desktop-schemas && \
|
|
git clone --depth 1 https://gitlab.gnome.org/GNOME/gsettings-desktop-schemas.git && \
|
|
cd gsettings-desktop-schemas && \
|
|
meson setup _build --prefix=/usr && \
|
|
meson compile -C _build && \
|
|
meson install -C _build && \
|
|
cd .. && \
|
|
dnf builddep -y gnome-settings-daemon && \
|
|
git clone --depth 1 https://gitlab.gnome.org/GNOME/gnome-settings-daemon.git && \
|
|
cd gnome-settings-daemon && \
|
|
meson setup _build --prefix=/usr && \
|
|
meson compile -C _build && \
|
|
meson install -C _build && \
|
|
cd .. && \
|
|
dnf builddep -y gtk4 && \
|
|
git clone --depth 1 https://gitlab.gnome.org/GNOME/gtk.git && \
|
|
cd gtk && \
|
|
meson setup _build --prefix=/usr && \
|
|
meson compile -C _build && \
|
|
meson install -C _build && \
|
|
cd .. && \
|
|
dnf builddep -y libadwaita && \
|
|
git clone --depth 1 https://gitlab.gnome.org/GNOME/libadwaita.git && \
|
|
cd libadwaita && \
|
|
meson setup _build --prefix=/usr -Dtests=false -Dexamples=false && \
|
|
meson compile -C _build && \
|
|
meson install -C _build && \
|
|
cd .. && \
|
|
git clone --depth 1 https://gitlab.gnome.org/GNOME/gnome-online-accounts.git && \
|
|
cd gnome-online-accounts && \
|
|
meson setup _build --prefix=/usr -Dfedora=true && \
|
|
meson compile -C _build && \
|
|
meson install -C _build && \
|
|
cd .. && \
|
|
dnf remove -y systemtap-runtime
|
|
|
|
##
|
|
# Stage: Build
|
|
#
|
|
# Checks if GNOME Control Center 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:
|
|
extends:
|
|
- '.fdo.suffixed-image@fedora'
|
|
- '.fedora.container.common'
|
|
stage: build
|
|
|
|
script:
|
|
- *environment_information
|
|
- *build_procedure
|
|
|
|
- echo "== Installing =="
|
|
- meson install -C _build
|
|
|
|
- echo "== Report =="
|
|
- build-aux/ci/ci-helper.sh "WARNINGS"
|
|
|
|
<<: *build_output
|
|
|
|
except:
|
|
variables:
|
|
- $CI_PIPELINE_SOURCE == "schedule"
|
|
|
|
# Same as build but with various off-by-default options enabled
|
|
conditional builds:
|
|
extends:
|
|
- build
|
|
artifacts:
|
|
# Only save build logs for these
|
|
<<: *build_logs
|
|
parallel:
|
|
matrix:
|
|
- BUILD_OPTS: '-Dmalcontent=true'
|
|
- BUILD_OPTS: '-Ddocumentation=true'
|
|
|
|
##
|
|
# Stage: Test
|
|
#
|
|
# Runs static checks.
|
|
# Runs the unit tests.
|
|
##
|
|
style-check-diff:
|
|
extends:
|
|
- '.fdo.suffixed-image@fedora'
|
|
- '.fedora.container.common'
|
|
needs:
|
|
- build.container.fedora@x86_64
|
|
stage: test
|
|
when: always
|
|
allow_failure: true
|
|
script:
|
|
- .gitlab-ci/run-style-check-diff.sh
|
|
|
|
check-potfiles:
|
|
extends:
|
|
- '.fdo.suffixed-image@fedora'
|
|
- '.fedora.container.common'
|
|
needs:
|
|
- build.container.fedora@x86_64
|
|
stage: test
|
|
when: always
|
|
variables:
|
|
GIT_SUBMODULE_STRATEGY: normal
|
|
script:
|
|
- .gitlab-ci/check-potfiles.sh
|
|
|
|
test:
|
|
extends:
|
|
- '.fdo.suffixed-image@fedora'
|
|
- '.fedora.container.common'
|
|
stage: test
|
|
|
|
needs:
|
|
- build
|
|
|
|
script:
|
|
- *environment_information
|
|
- *run_tests
|
|
|
|
- |
|
|
if [[ -n "${CI_COMMIT_TAG}" ]]; then
|
|
echo "== Distro Test =="
|
|
meson dist -C _build
|
|
fi
|
|
|
|
artifacts:
|
|
<<: *build_logs
|
|
reports:
|
|
junit: '_build/meson-logs/testlog.junit.xml'
|
|
|
|
except:
|
|
variables:
|
|
- $CI_PIPELINE_SOURCE == "schedule"
|
|
- $CI_COMMIT_TITLE =~ /^Update.*translation$/
|
|
|
|
# Runs the coverage test.
|
|
coverage:
|
|
extends:
|
|
- '.fdo.suffixed-image@fedora'
|
|
- '.fedora.container.common'
|
|
dependencies:
|
|
- build.container.fedora@x86_64
|
|
stage: test
|
|
variables:
|
|
BUILD_OPTS: "-Db_coverage=true"
|
|
coverage: '/^Lines:.\d+.\d+.(\d+\.\d+\%)/'
|
|
only:
|
|
- main@GNOME/gnome-control-center
|
|
|
|
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
|
|
|
|
artifacts:
|
|
<<: *build_logs
|
|
|
|
except:
|
|
variables:
|
|
- $CI_PIPELINE_SOURCE == "schedule"
|
|
- $CI_COMMIT_TITLE =~ /^Update.*translation$/
|
|
|
|
##
|
|
# Stage: Deploy
|
|
#
|
|
# Publishes the Coverage Report generated above
|
|
##
|
|
pages:
|
|
extends:
|
|
- '.fdo.suffixed-image@fedora'
|
|
- '.fedora.container.common'
|
|
stage: deploy
|
|
dependencies:
|
|
- coverage
|
|
script:
|
|
- mv _build/meson-logs/coveragereport/ public/
|
|
artifacts:
|
|
paths:
|
|
- public
|
|
only:
|
|
- main@GNOME/gnome-control-center
|
|
|
|
except:
|
|
variables:
|
|
- $CRON_TASK == "BUILD_CI_IMAGES"
|
|
- $CI_COMMIT_TITLE =~ /^Update.*translation$/
|
|
|
|
##
|
|
# Stage: Manual
|
|
#
|
|
# Creates a flatpak
|
|
##
|
|
flatpak:
|
|
stage: manual
|
|
image: quay.io/gnome_infrastructure/gnome-runtime-images:gnome-master
|
|
artifacts:
|
|
name: package
|
|
paths:
|
|
- $(pwd)/*.flatpak
|
|
expire_in: 7 days
|
|
|
|
variables:
|
|
OLD_APPID: "org.gnome.Settings"
|
|
APPID: "org.gnome.Settings.Devel"
|
|
BUNDLE: "org.gnome.Settings.Devel.flatpak"
|
|
MANIFEST_PATH: "build-aux/flatpak/org.gnome.Settings.Devel.json"
|
|
PROJECT_ID: "org.gnome.Settings"
|
|
PROJECT_NAME: "gnome-control-center.git"
|
|
RUNTIME_REPO: "https://sdk.gnome.org/gnome-nightly.flatpakrepo"
|
|
|
|
script:
|
|
- echo "== Flatpak packaging =="
|
|
|
|
# Make it a develoment manifest
|
|
- sed -i -n "p; s/$PROJECT_NAME//p" ${MANIFEST_PATH}
|
|
- >
|
|
sed -i "s,\"app-id\" : \"$PROJECT_ID\",\"app-id\" : \"<<ID>>\",g" ${MANIFEST_PATH}
|
|
- >
|
|
sed -i "s,\"url\" : \"https://gitlab.gnome.org/GNOME/$PROJECT_NAME\",\"branch\" : \"<<current>>\"\,,g" ${MANIFEST_PATH}
|
|
- >
|
|
sed -i "s,\"url\" : \"https://gitlab.gnome.org/GNOME/\",\"path\" : \".\",g" ${MANIFEST_PATH}
|
|
|
|
# Adjust the manifest to HEAD
|
|
- sed -i "s,<<ID>>,$APPID,g" ${MANIFEST_PATH}
|
|
- sed -i "s,<<current>>,origin/$CI_COMMIT_REF_NAME,g" ${MANIFEST_PATH}
|
|
|
|
# Update the icon name
|
|
- mv data/icons/hicolor/scalable/apps/$OLD_APPID.svg data/icons/hicolor/scalable/apps/$APPID.svg
|
|
- mv data/icons/hicolor/symbolic/apps/$OLD_APPID-symbolic.svg data/icons/hicolor/symbolic/apps/$APPID-symbolic.svg
|
|
|
|
- flatpak-builder --bundle-sources --disable-rofiles-fuse --repo=devel build ${MANIFEST_PATH}
|
|
- flatpak build-bundle devel ${BUNDLE} --runtime-repo=${RUNTIME_REPO} ${APPID}
|
|
|
|
cache:
|
|
paths:
|
|
- .flatpak-builder/cache
|
|
when: manual
|
|
except:
|
|
- tags
|
|
- gnome-3-.*
|
|
- main@GNOME/gnome-control-center
|
|
|
|
# Runs the sanitizers [address, thread, undefined, and memory].
|
|
.sanitizer: &sanitizer
|
|
extends:
|
|
- '.fdo.suffixed-image@fedora'
|
|
- '.fedora.container.common'
|
|
dependencies:
|
|
- build.container.fedora@x86_64
|
|
stage: manual
|
|
when: manual
|
|
script:
|
|
- *environment_information
|
|
- *build_procedure
|
|
- *run_tests
|
|
|
|
artifacts:
|
|
<<: *build_logs
|
|
|
|
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"
|
|
LSAN_OPTIONS: "suppressions=${CI_PROJECT_DIR}/build-aux/ci/lsan.supp"
|
|
|
|
tsan:
|
|
<<: *sanitizer
|
|
variables:
|
|
BUILD_OPTS: "-Db_sanitize=thread"
|
|
|
|
ubsan:
|
|
<<: *sanitizer
|
|
variables:
|
|
BUILD_OPTS: "-Db_sanitize=undefined"
|
|
|
|
msan:
|
|
<<: *sanitizer
|
|
variables:
|
|
BUILD_OPTS: "-Db_sanitize=memory"
|
|
CC: "clang"
|