geary/.gitlab-ci.yml

157 lines
4.4 KiB
YAML

#
# Geary CI config.
#
stages:
- build
variables:
BUILD_DIR: build
CONFIG_CMD: meson --buildtype=debug build
BUILD_CMD: ninja -v -C $BUILD_DIR
TEST_CMD: xvfb-run meson test -v --no-stdsplit -C $BUILD_DIR
INSTALL_CMD: ninja -v -C $BUILD_DIR install
# Fedora packages
FEDORA_DEPS: vala gobject-introspection-devel
meson desktop-file-utils libcanberra-devel libgee-devel
glib2-devel gmime-devel gtk3-devel libnotify-devel sqlite-devel
webkitgtk4-devel libsecret-devel libxml2-devel vala-tools
gcr-devel enchant-devel libunwind-devel iso-codes-devel
gnome-online-accounts-devel itstool json-glib-devel
FEDORA_TEST_DEPS: Xvfb tar xz
# Ubuntu & Debian packages
UBUNTU_DEPS: valac libgirepository1.0-dev
meson desktop-file-utils libcanberra-dev
libgee-0.8-dev libglib2.0-dev libgmime-2.6-dev libgtk-3-dev
libsecret-1-dev libxml2-dev libnotify-dev libsqlite3-dev
libwebkit2gtk-4.0-dev libgcr-3-dev libenchant-dev
libunwind-dev iso-codes libgoa-1.0-dev itstool gettext
libmessaging-menu-dev libunity-dev libjson-glib-dev
UBUNTU_TEST_DEPS: xauth xvfb
# Flatpak vars
APP_ID: org.gnome.Geary
BUNDLE: geary-dev.flatpak
FLATPAK_MODULE: geary
GIT_SUBMODULE_STRATEGY: normal
MANIFEST_PATH: org.gnome.Geary.json
RUNTIME_REPO: "https://sdk.gnome.org/gnome-nightly.flatpakrepo"
stages:
- build
- deploy
fedora:
stage: build
image: fedora:latest
before_script:
- dnf update -y --nogpgcheck
- dnf install -y --nogpgcheck $FEDORA_DEPS $FEDORA_TEST_DEPS
script:
- $CONFIG_CMD
- $BUILD_CMD
- $TEST_CMD
- $INSTALL_CMD
ubuntu:
stage: build
image: ubuntu:rolling
before_script:
- apt-get update
- apt-get install -q -y --no-install-recommends $UBUNTU_DEPS $UBUNTU_TEST_DEPS
script:
- $CONFIG_CMD
- $BUILD_CMD
- $TEST_CMD
- $INSTALL_CMD
deb-package:
stage: build
image: ubuntu:rolling
before_script:
- apt-get update
- apt-get install -q -y --no-install-recommends packaging-dev $UBUNTU_DEPS
script:
- dpkg-buildpackage -b -us -uc
flatpak:
image: 'registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:master'
stage: 'build'
script:
- flatpak-builder --stop-at=${FLATPAK_MODULE} app ${MANIFEST_PATH}
# Make sure to keep this in sync with the Flatpak manifest, all arguments
# are passed except the config-args because we build it ourselves
- flatpak build app meson --prefix=/app ${MESON_ARGS} _build
- flatpak build app ninja -C _build install
- flatpak-builder --finish-only --repo=repo app ${MANIFEST_PATH}
# Run automatic tests inside the Flatpak env
- >
xvfb-run -a -s "-screen 0 1024x768x24"
flatpak build
--env=LANG=C.UTF-8
--env=NO_AT_BRIDGE=1
app
dbus-run-session
meson test -C _build --no-stdsplit --print-errorlogs
# Generate a Flatpak bundle
- flatpak build-bundle repo ${BUNDLE} --runtime-repo=${RUNTIME_REPO} ${APP_ID}
artifacts:
when: 'always'
paths:
- "${BUNDLE}"
- '_build/meson-logs/meson-log.txt'
- '_build/meson-logs/testlog.txt'
expire_in: 2 days
cache:
key: "$CI_JOB_NAME"
paths:
- '.flatpak-builder/downloads'
- '.flatpak-builder/git'
except:
variables:
# Don't run for translation commits
- $CI_COMMIT_TITLE =~ /^Update.*translation$/
review:
stage: 'deploy'
script:
- echo "Generating Flatpak deployment"
artifacts:
paths:
- "${BUNDLE}"
expire_in: 30 days
environment:
name: review/$CI_COMMIT_REF_NAME
url: https://gitlab.gnome.org/$CI_PROJECT_PATH/-/jobs/$CI_JOB_ID/artifacts/raw/${BUNDLE}
on_stop: stop_review
except:
refs:
- 'tags'
# No need to run on the upstream master branch either
- 'master'
# don't run on stable branches
- /^gnome-\d-\d\d$/
variables:
# Don't run for translation commits
- $CI_COMMIT_TITLE =~ /^Update.*translation$/
stop_review:
stage: 'deploy'
script:
- echo "Stopping Flatpak deployment"
when: 'manual'
environment:
name: review/$CI_COMMIT_REF_NAME
action: 'stop'
except:
refs:
- 'tags'
# No need to run on the upstream master branch either
- 'master'
# don't run on stable branches
- /^gnome-\d-\d\d$/
variables:
# Don't run for translation commits
- $CI_COMMIT_TITLE =~ /^Update.*translation$/