forked from AuroraMiddleware/gtk
6e0def6474
We use the latest 0.64 even if we depend on 0.60 because of fixes in the subproject command.
409 lines
11 KiB
YAML
409 lines
11 KiB
YAML
include:
|
|
- project: 'gnome/citemplates'
|
|
file: 'flatpak/flatpak_ci_initiative.yml'
|
|
|
|
stages:
|
|
- check
|
|
- build
|
|
- analysis
|
|
- docs
|
|
- flatpak
|
|
- publish
|
|
- deploy
|
|
|
|
.cache-paths: &cache-paths
|
|
paths:
|
|
- _ccache/
|
|
- subprojects/gdk-pixbuf/
|
|
- subprojects/glib/
|
|
- subprojects/graphene/
|
|
- subprojects/libepoxy/
|
|
- subprojects/pango/
|
|
|
|
# Common variables
|
|
variables:
|
|
COMMON_MESON_FLAGS: "-Dwerror=true -Dglib:werror=false -Dpango:werror=false -Dgtk-doc:werror=false -Dwayland-protocols:werror=false -Dsysprof:werror=false -Dwayland:werror=false"
|
|
BACKEND_FLAGS: "-Dx11-backend=true -Dwayland-backend=true -Dbroadway-backend=true"
|
|
FEATURE_FLAGS: "-Dvulkan=enabled -Dcloudproviders=enabled"
|
|
MESON_TEST_TIMEOUT_MULTIPLIER: 3
|
|
FEDORA_IMAGE: "registry.gitlab.gnome.org/gnome/gtk/fedora:v39"
|
|
FLATPAK_IMAGE: "quay.io/gnome_infrastructure/gnome-runtime-images:gnome-master"
|
|
|
|
.only-default:
|
|
only:
|
|
- branches
|
|
except:
|
|
- tags
|
|
|
|
style-check-diff:
|
|
extends: .only-default
|
|
image: $FEDORA_IMAGE
|
|
stage: check
|
|
allow_failure: true
|
|
script:
|
|
- .gitlab-ci/run-style-check-diff.sh
|
|
|
|
.build-fedora-default:
|
|
extends: .only-default
|
|
image: $FEDORA_IMAGE
|
|
artifacts:
|
|
when: always
|
|
reports:
|
|
junit:
|
|
- "${CI_PROJECT_DIR}/_build/report-x11.xml"
|
|
- "${CI_PROJECT_DIR}/_build/report-x11_unstable.xml"
|
|
- "${CI_PROJECT_DIR}/_build/report-wayland.xml"
|
|
- "${CI_PROJECT_DIR}/_build/report-wayland_unstable.xml"
|
|
- "${CI_PROJECT_DIR}/_build/report-broadway.xml"
|
|
- "${CI_PROJECT_DIR}/_build/report-broadway_unstable.xml"
|
|
name: "gtk-${CI_COMMIT_REF_NAME}"
|
|
paths:
|
|
- "${CI_PROJECT_DIR}/_build/meson-logs"
|
|
- "${CI_PROJECT_DIR}/_build/report*.xml"
|
|
- "${CI_PROJECT_DIR}/_build/report*.html"
|
|
- "${CI_PROJECT_DIR}/_build/testsuite/reftests/output/*/*.png"
|
|
- "${CI_PROJECT_DIR}/_build/testsuite/reftests/output/*/*.node"
|
|
- "${CI_PROJECT_DIR}/_build/testsuite/tools/output/*/*"
|
|
- "${CI_PROJECT_DIR}/_build/testsuite/gsk/compare/*/*/*.png"
|
|
- "${CI_PROJECT_DIR}/_build/testsuite/css/output/*/*.syscap"
|
|
- "${CI_PROJECT_DIR}/_build_hello/meson-logs"
|
|
cache:
|
|
key: "$CI_JOB_NAME"
|
|
paths:
|
|
- _ccache/
|
|
- subprojects/gdk-pixbuf/
|
|
- subprojects/glib/
|
|
- subprojects/graphene/
|
|
- subprojects/libepoxy/
|
|
- subprojects/pango/
|
|
|
|
fedora-x86_64:
|
|
extends: .build-fedora-default
|
|
stage: build
|
|
needs: []
|
|
variables:
|
|
EXTRA_MESON_FLAGS: "--buildtype=debug --default-library=both"
|
|
script:
|
|
- .gitlab-ci/show-info-linux.sh
|
|
- pip3 install --user meson~=0.64
|
|
- meson subprojects download
|
|
- mkdir _install
|
|
- meson --prefix=${CI_PROJECT_DIR}/_install
|
|
${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} ${BACKEND_FLAGS} ${FEATURE_FLAGS}
|
|
_build
|
|
- meson compile -C _build
|
|
- meson install -C _build
|
|
- PKG_CONFIG_PATH=${CI_PROJECT_DIR}/_install/lib64/pkgconfig:${CI_PROJECT_DIR}/_install/share/pkgconfig meson setup _build_hello examples/hello
|
|
- LD_LIBRARY_PATH=${CI_PROJECT_DIR}/_install/lib64 meson compile -C _build_hello
|
|
- .gitlab-ci/run-tests.sh _build x11
|
|
- .gitlab-ci/run-tests.sh _build wayland
|
|
- .gitlab-ci/run-tests.sh _build waylandgles
|
|
- .gitlab-ci/run-tests.sh _build broadway
|
|
|
|
release-build:
|
|
extends: .build-fedora-default
|
|
stage: build
|
|
needs: []
|
|
variables:
|
|
EXTRA_MESON_FLAGS: "--buildtype=release"
|
|
script:
|
|
- .gitlab-ci/show-info-linux.sh
|
|
- pip3 install --user meson~=0.64
|
|
- meson subprojects download
|
|
- meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} ${BACKEND_FLAGS} ${FEATURE_FLAGS}
|
|
_build
|
|
- ninja -C _build
|
|
- .gitlab-ci/run-tests.sh _build x11
|
|
|
|
fedora-mingw64:
|
|
extends: .build-fedora-default
|
|
stage: build
|
|
needs: []
|
|
before_script:
|
|
- sudo dnf install -y
|
|
mingw64-filesystem
|
|
mingw64-gcc
|
|
mingw64-binutils
|
|
mingw64-cairo
|
|
mingw64-gdk-pixbuf
|
|
mingw64-gstreamer1-plugins-bad-free
|
|
mingw64-glib2
|
|
mingw64-libepoxy
|
|
mingw64-pango
|
|
# mingw64-graphene (rawhide)
|
|
script:
|
|
- .gitlab-ci/show-info-linux.sh
|
|
- pip3 install --user meson~=0.64
|
|
- meson subprojects download
|
|
- mkdir _build && cd _build
|
|
- mingw64-meson -Dintrospection=disabled -Dgraphene:introspection=disabled
|
|
- ninja
|
|
|
|
installed-tests:
|
|
extends: .build-fedora-default
|
|
stage: build
|
|
needs: []
|
|
variables:
|
|
EXTRA_MESON_FLAGS: "--prefix=/usr --libdir=/usr/lib64 -Dinstall-tests=true"
|
|
G_TEST_ACCESSIBLE: 1
|
|
script:
|
|
- .gitlab-ci/show-info-linux.sh
|
|
- pip3 install --user meson~=0.64
|
|
- meson subprojects download
|
|
- meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} ${BACKEND_FLAGS} ${FEATURE_FLAGS}
|
|
_build
|
|
- ninja -C _build
|
|
- sudo ninja -C _build install
|
|
- dbus-run-session xvfb-run -a -s "-screen 0 1024x768x24"
|
|
gnome-desktop-testing-runner
|
|
--report-directory=_build/installed-tests-report/failed/
|
|
--parallel=0
|
|
gtk-4.0
|
|
artifacts:
|
|
paths:
|
|
- "_build/installed-tests-report/"
|
|
|
|
|
|
.mingw-defaults:
|
|
extends: .only-default
|
|
stage: build
|
|
tags:
|
|
- win32-ps
|
|
script:
|
|
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
|
- C:\msys64\usr\bin\bash -lc "bash -x ./.gitlab-ci/test-msys2.sh"
|
|
cache:
|
|
key: "$CI_JOB_NAME"
|
|
paths:
|
|
- _ccache/
|
|
- subprojects/gdk-pixbuf/
|
|
- subprojects/glib/
|
|
- subprojects/graphene/
|
|
- subprojects/libepoxy/
|
|
- subprojects/pango/
|
|
|
|
msys2-mingw64:
|
|
extends: .mingw-defaults
|
|
needs: []
|
|
variables:
|
|
MSYSTEM: "MINGW64"
|
|
CHERE_INVOKING: "yes"
|
|
artifacts:
|
|
when: always
|
|
expose_as: 'Windows_DLL_MSYS2_64_bit_toolchain'
|
|
paths:
|
|
- "${CI_PROJECT_DIR}/_build/gtkdll.tar.gz"
|
|
|
|
macos:
|
|
extends: .only-default
|
|
only:
|
|
- branches@GNOME/gtk
|
|
stage: build
|
|
tags:
|
|
- macos
|
|
needs: []
|
|
before_script:
|
|
- bash .gitlab-ci/show-info-osx.sh
|
|
- pip3 install --user meson~=0.64
|
|
- pip3 install --user ninja
|
|
- export PATH=/Users/gitlabrunner/Library/Python/3.7/bin:$PATH
|
|
- export MESON_FORCE_BACKTRACE=1
|
|
script:
|
|
- meson -Dx11-backend=false
|
|
-Dbroadway-backend=true
|
|
-Dmacos-backend=true
|
|
-Dmedia-gstreamer=disabled
|
|
-Dintrospection=disabled
|
|
-Dcpp_std=c++11
|
|
-Dpixman:tests=disabled
|
|
-Dlibjpeg-turbo:simd=disabled
|
|
_build
|
|
- ninja -C _build
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- "${CI_PROJECT_DIR}/_build/meson-logs"
|
|
|
|
vs2017-x64:
|
|
extends: .only-default
|
|
# TODO: Uncomment this when ready to merge.
|
|
#only:
|
|
# - branches@GNOME/gtk
|
|
stage: build
|
|
tags:
|
|
- win32-ps
|
|
needs: []
|
|
script:
|
|
- .gitlab-ci/test-msvc.bat
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- "${CI_PROJECT_DIR}/_build/meson-logs"
|
|
|
|
.flatpak-defaults:
|
|
image: $FLATPAK_IMAGE
|
|
stage: flatpak
|
|
allow_failure: true
|
|
tags:
|
|
- flatpak
|
|
artifacts:
|
|
paths:
|
|
- "${APPID}-dev.flatpak"
|
|
- 'repo.tar'
|
|
expire_in: 1 day
|
|
script:
|
|
- bash -x ./.gitlab-ci/flatpak-build.sh "${APPID}"
|
|
|
|
# Manual jobs, for branches and MRs
|
|
.flatpak-manual:
|
|
extends: .flatpak-defaults
|
|
when: manual
|
|
|
|
# Only build Flatpak bundles automatically on main
|
|
.flatpak-main:
|
|
extends: .flatpak-defaults
|
|
only:
|
|
- main
|
|
|
|
flatpak-manual:demo:
|
|
extends: .flatpak-manual
|
|
needs: []
|
|
variables:
|
|
APPID: org.gtk.Demo4
|
|
|
|
flatpak-main:demo:
|
|
extends: .flatpak-main
|
|
needs: []
|
|
variables:
|
|
APPID: org.gtk.Demo4
|
|
|
|
flatpak-manual:widget-factory:
|
|
extends: .flatpak-manual
|
|
needs: []
|
|
variables:
|
|
APPID: org.gtk.WidgetFactory4
|
|
|
|
flatpak-main:widget-factory:
|
|
extends: .flatpak-main
|
|
needs: []
|
|
variables:
|
|
APPID: org.gtk.WidgetFactory4
|
|
|
|
flatpak-manual:icon-browser:
|
|
extends: .flatpak-manual
|
|
needs: []
|
|
variables:
|
|
APPID: org.gtk.IconBrowser4
|
|
|
|
flatpak-main:icon-browser:
|
|
extends: .flatpak-main
|
|
needs: []
|
|
variables:
|
|
APPID: org.gtk.IconBrowser4
|
|
|
|
flatpak-manual:node-editor:
|
|
extends: .flatpak-manual
|
|
needs: []
|
|
variables:
|
|
APPID: org.gtk.gtk4.NodeEditor
|
|
|
|
flatpak-main:node-editor:
|
|
extends: .flatpak-main
|
|
needs: []
|
|
variables:
|
|
APPID: org.gtk.gtk4.NodeEditor
|
|
|
|
# Publish the demo apps to the GNOME Nightly repo
|
|
# https://wiki.gnome.org/Apps/Nightly
|
|
# https://gitlab.gnome.org/GNOME/Initiatives/-/wikis/DevOps-with-Flatpak
|
|
nightly demo:
|
|
extends: '.publish_nightly'
|
|
dependencies: ['flatpak-main:demo']
|
|
needs: ['flatpak-main:demo']
|
|
|
|
nightly factory:
|
|
extends: '.publish_nightly'
|
|
dependencies: ['flatpak-main:widget-factory']
|
|
needs: ['flatpak-main:widget-factory']
|
|
|
|
nightly icon-browser:
|
|
extends: '.publish_nightly'
|
|
dependencies: ['flatpak-main:icon-browser']
|
|
needs: ['flatpak-main:icon-browser']
|
|
|
|
nightly node-editor:
|
|
extends: '.publish_nightly'
|
|
dependencies: ['flatpak-main:node-editor']
|
|
needs: ['flatpak-main:node-editor']
|
|
|
|
static-scan:
|
|
image: $FEDORA_IMAGE
|
|
stage: analysis
|
|
needs: []
|
|
variables:
|
|
EXTRA_MESON_FLAGS: "--buildtype=debug"
|
|
script:
|
|
- pip3 install --user meson~=0.64
|
|
- meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} _scan_build
|
|
- ninja -C _scan_build scan-build
|
|
artifacts:
|
|
paths:
|
|
- _scan_build/meson-logs
|
|
allow_failure: true
|
|
|
|
# Run tests with the address sanitizer. We need to turn off introspection,
|
|
# since it is incompatible with asan
|
|
asan-build:
|
|
image: $FEDORA_IMAGE
|
|
tags: [ asan ]
|
|
stage: analysis
|
|
needs: []
|
|
variables:
|
|
script:
|
|
- pip3 install --user meson~=0.64
|
|
- CC=clang meson --buildtype=debugoptimized -Db_sanitize=address -Db_lundef=false -Dintrospection=disabled _build
|
|
- ninja -C _build
|
|
- .gitlab-ci/run-tests.sh _build wayland
|
|
artifacts:
|
|
paths:
|
|
- _build/meson-logs
|
|
allow_failure: true
|
|
|
|
reference:
|
|
image: $FEDORA_IMAGE
|
|
stage: docs
|
|
needs: []
|
|
variables:
|
|
EXTRA_MESON_FLAGS: "--buildtype=release --force-fallback-for=gdk-pixbuf,pango"
|
|
script:
|
|
- pip3 install --user meson~=0.64
|
|
- meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} -Dgtk_doc=true -Dgdk-pixbuf:gtk_doc=true -Dpango:gtk_doc=true _build
|
|
- meson compile -C _build
|
|
- mkdir -p _reference/
|
|
- mv _build/docs/reference/gdk/gdk4/ _reference/gdk4/
|
|
- mv _build/docs/reference/gdk/gdk4-x11/ _reference/gdk4-x11/
|
|
- mv _build/docs/reference/gdk/gdk4-wayland/ _reference/gdk4-wayland/
|
|
- mv _build/docs/reference/gsk/gsk4/ _reference/gsk4/
|
|
- mv _build/docs/reference/gtk/gtk4/ _reference/gtk4/
|
|
- mv _build/subprojects/pango/docs/Pango/ _reference/Pango/
|
|
- mv _build/subprojects/pango/docs/PangoCairo/ _reference/PangoCairo/
|
|
- mv _build/subprojects/pango/docs/PangoFc/ _reference/PangoFc/
|
|
- mv _build/subprojects/pango/docs/PangoFT2/ _reference/PangoFT2/
|
|
- mv _build/subprojects/pango/docs/PangoOT/ _reference/PangoOT/
|
|
- mv _build/subprojects/pango/docs/PangoXft/ _reference/PangoXft/
|
|
- mv _build/subprojects/gdk-pixbuf/docs/gdk-pixbuf/ _reference/gdk-pixbuf/
|
|
- mv _build/subprojects/gdk-pixbuf/docs/gdk-pixdata/ _reference/gdk-pixdata/
|
|
artifacts:
|
|
paths:
|
|
- _reference
|
|
|
|
publish-docs:
|
|
image: fedora:latest
|
|
stage: publish
|
|
needs: ['reference']
|
|
script:
|
|
- "curl -X POST -F token=${PAGES_TRIGGER_TOKEN} -F ref=docs-gtk-org https://gitlab.gnome.org/api/v4/projects/665/trigger/pipeline"
|
|
only:
|
|
refs:
|
|
- main
|