| include: |
| - project: 'Infrastructure/freedesktop-ci-templates' |
| ref: '707b49ef' |
| file: |
| - 'templates/fedora.yml' |
| - 'templates/debian.yml' |
| - project: 'gnome/citemplates' |
| file: 'flatpak/flatpak_ci_initiative.yml' |
| - component: gitlab.gnome.org/GNOME/citemplates/release-service@master |
| inputs: |
| dist-job-name: "release-build" |
| tarball-artifact-path: "_build/meson-dist/$CI_PROJECT_NAME-$CI_COMMIT_TAG.tar.xz" |
| |
| stages: |
| - prepare |
| - check |
| - build |
| - analysis |
| - docs |
| - android |
| - flatpak |
| - publish |
| - deploy |
| - release |
| |
| .cache-paths: &cache-paths |
| paths: |
| - _ccache/ |
| - subprojects/gdk-pixbuf/ |
| - subprojects/glib/ |
| - subprojects/graphene/ |
| - subprojects/libepoxy/ |
| - subprojects/pango/ |
| |
| # Common variables |
| variables: |
| FDO_UPSTREAM_REPO: GNOME/gtk |
| COMMON_MESON_FLAGS: "-Dwerror=true -Dcairo:werror=false -Dgi-docgen:werror=false -Dgraphene:werror=false -Dlibepoxy:werror=false -Dlibsass:werror=false -Dpango:werror=false -Dsassc:werror=false -Dgdk-pixbuf:werror=false -Dglib:werror=false -Dlibcloudproviders:werror=false -Dlibpng:werror=false -Dlibtiff:werror=false -Dsysprof:werror=false -Dwayland:werror=false -Dwayland-protocols:werror=false -Dharfbuzz:werror=false -Dfreetype2:werror=false -Dfontconfig:werror=false -Dfribidi:werror=false -Dlibffi:werror=false -Dlibjpeg-turbo:werror=false -Dmutest:werror=false -Dpcre2:werror=false -Dpixman:werror=false -Dproxy-libintl:werror=false -Dgperf:werror=false" |
| BACKEND_FLAGS: "-Dx11-backend=true -Dwayland-backend=true -Dbroadway-backend=true" |
| FEATURE_FLAGS: "-Dvulkan=enabled -Dcloudproviders=enabled -Dbuild-testsuite=true -Dintrospection=enabled" |
| MESON_TEST_TIMEOUT_MULTIPLIER: 3 |
| MESON_TEST_MAX_PROCESSES: 8 |
| |
| workflow: |
| rules: |
| # run merge request pipelines |
| - if: $CI_PIPELINE_SOURCE == "merge_request_event" |
| # do not run branch pipelines if corresponding merge requests exist... |
| # (this avoids duplicate pipelines) |
| - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS |
| when: never |
| # ...but otherwise run branch pipelines |
| - if: $CI_COMMIT_BRANCH |
| # run tag pipelines |
| - if: $CI_COMMIT_TAG |
| |
| default: |
| retry: |
| max: 2 |
| when: |
| - 'runner_system_failure' |
| - 'stuck_or_timeout_failure' |
| - 'scheduler_failure' |
| - 'api_failure' |
| interruptible: true |
| |
| .container.fedora: |
| variables: |
| BASE_TAG: '2025-08-10.0' |
| FDO_DISTRIBUTION_VERSION: 42 |
| FDO_DISTRIBUTION_TAG: "x86_64-${BASE_TAG}" |
| FDO_DISTRIBUTION_PACKAGES: |
| ccache |
| clang |
| clang-analyzer |
| clang-tools-extra |
| cmake |
| compiler-rt |
| dbus-daemon |
| dejavu-sans-mono-fonts |
| diffutils |
| git |
| graphviz |
| libasan |
| libcloudproviders-devel |
| librsvg2-devel |
| libubsan |
| meson |
| mingw64-filesystem |
| mingw64-gcc |
| mingw64-binutils |
| mingw64-cairo |
| mingw64-gdk-pixbuf |
| mingw64-gstreamer1-plugins-bad-free |
| mingw64-glib2 |
| mingw64-libepoxy |
| mingw64-pango |
| mutter |
| python-devel |
| python3-jinja2 |
| python3-markdown |
| python3-markupsafe |
| python3-pip |
| python3-pygments |
| python3-typogrify |
| sassc |
| vulkan-validation-layers |
| weston |
| xorg-x11-server-Xvfb |
| FDO_DISTRIBUTION_EXEC: | |
| dnf builddep -y gtk4 && |
| meson subprojects download || exit 137 && |
| meson subprojects update --reset || exit 137 && |
| mkdir /subprojects && find subprojects -mindepth 1 -maxdepth 1 -type d -exec mv {} /subprojects \; |
| |
| .distribution.fedora: |
| extends: |
| - .fdo.distribution-image@fedora |
| - .container.fedora |
| |
| container:fedora: |
| extends: |
| - .container.fedora |
| - .fdo.container-build@fedora@x86_64 |
| # DNS issues can cause this to fail |
| retry: |
| max: 2 |
| exit_codes: 137 |
| stage: prepare |
| |
| .container.android: |
| variables: |
| BASE_TAG: '2025-08-05.0' |
| FDO_DISTRIBUTION_VERSION: sid |
| FDO_DISTRIBUTION_TAG: "x86_64-${BASE_TAG}" |
| FDO_DISTRIBUTION_PACKAGES: |
| build-essential |
| gir1.2-appstream |
| git |
| git-lfs |
| glslc |
| gobject-introspection |
| libglib2.0-dev-bin |
| libglib-perl |
| libglib-object-introspection-perl |
| libipc-run-perl |
| libjson-perl |
| libset-scalar-perl |
| libxml2-utils |
| libxml-libxml-perl |
| libxml-libxslt-perl |
| meson |
| ninja-build |
| openjdk-17-jre |
| openjdk-17-jdk |
| perl |
| pkg-config |
| sassc |
| sdkmanager |
| sudo |
| FDO_DISTRIBUTION_EXEC: | |
| .gitlab-ci/android-sdk.sh && |
| apt-get -y clean |
| ANDROID_HOME: "/opt/android/" |
| ANDROID_SDKVER: "35.0.0" |
| HOST_USER_ID: "5555" |
| LANG: "C.UTF-8" |
| |
| .distribution.android: |
| extends: |
| - .fdo.distribution-image@debian |
| - .container.android |
| |
| container:android: |
| extends: |
| - .container.android |
| - .fdo.container-build@debian@x86_64 |
| stage: prepare |
| |
| style-check-diff: |
| extends: |
| - .distribution.fedora |
| stage: check |
| when: manual |
| script: |
| - .gitlab-ci/run-style-check-diff.sh |
| needs: ['container:fedora'] |
| |
| .test-runner: |
| artifacts: |
| name: "gtk-${CI_COMMIT_REF_NAME}" |
| when: always |
| reports: |
| junit: |
| - "${CI_PROJECT_DIR}/_build/meson-logs/testlog-x11.junit.xml" |
| - "${CI_PROJECT_DIR}/_build/meson-logs/testlog-wayland.junit.xml" |
| - "${CI_PROJECT_DIR}/_build/meson-logs/testlog-wayland_gl.junit.xml" |
| - "${CI_PROJECT_DIR}/_build/meson-logs/testlog-wayland_minimal.junit.xml" |
| - "${CI_PROJECT_DIR}/_build/meson-logs/testlog-broadway.junit.xml" |
| paths: |
| - "${CI_PROJECT_DIR}/_build/meson-logs" |
| - "${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/gsk/compare/*/*/*.node" |
| - "${CI_PROJECT_DIR}/_build/testsuite/css/output/*/*.syscap" |
| - "${CI_PROJECT_DIR}/_build/testsuite/headless/*/*.log" |
| - "${CI_PROJECT_DIR}/_build_hello/meson-logs" |
| - "${CI_PROJECT_DIR}/_build/gtk/GdkX11-4.0.gir" |
| - "${CI_PROJECT_DIR}/_build/gtk/GdkWayland-4.0.gir" |
| - "${CI_PROJECT_DIR}/_build/meson-dist/*.tar.xz" |
| |
| .build-fedora-default: |
| extends: |
| - .distribution.fedora |
| cache: |
| key: "$CI_JOB_NAME" |
| paths: |
| - _ccache/ |
| |
| .meson-subprojects: |
| before_script: |
| - find /subprojects -mindepth 1 -maxdepth 1 -type d -exec ln -s {} subprojects/ \; |
| |
| fedora-x86_64: |
| extends: |
| - .test-runner |
| - .build-fedora-default |
| - .meson-subprojects |
| stage: build |
| needs: ["container:fedora"] |
| variables: |
| EXTRA_MESON_FLAGS: "--buildtype=debug --default-library=both" |
| script: |
| - .gitlab-ci/show-info-linux.sh |
| - export PATH="$HOME/.local/bin:$PATH" |
| - meson setup |
| ${COMMON_MESON_FLAGS} |
| ${EXTRA_MESON_FLAGS} |
| ${BACKEND_FLAGS} |
| ${FEATURE_FLAGS} |
| _build |
| - meson compile -C _build |
| - .gitlab-ci/run-tests.sh _build x11 gtk |
| # only repeat test runs that are likely affected by test setups |
| - .gitlab-ci/run-tests.sh _build wayland_gl gtk:gdk,gtk:gsk-gl |
| |
| release-build: |
| extends: |
| - .test-runner |
| - .build-fedora-default |
| stage: build |
| needs: ['container:fedora'] |
| variables: |
| EXTRA_MESON_FLAGS: "--buildtype=release" |
| script: |
| - .gitlab-ci/show-info-linux.sh |
| - mkdir _install |
| # don't use catch by default, since it causes sporadic test failures |
| # - export PATH="$HOME/.local/bin:${CI_PROJECT_DIR}/_install/bin:$PATH" |
| # - .gitlab-ci/install-meson-project.sh --prefix ${CI_PROJECT_DIR}/_install https://gitlab.gnome.org/jadahl/catch.git main |
| - git config --global --add safe.directory $CI_PROJECT_DIR |
| - meson setup |
| --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 wayland gtk |
| - meson dist -C _build --include-subprojects --no-tests |
| |
| fedora-clang: |
| extends: |
| - .test-runner |
| - .build-fedora-default |
| - .meson-subprojects |
| stage: build |
| needs: ["container:fedora"] |
| variables: |
| EXTRA_MESON_FLAGS: "--buildtype=release" |
| script: |
| - .gitlab-ci/show-info-linux.sh |
| - export PATH="$HOME/.local/bin:$PATH" |
| - export CC=clang |
| - meson setup |
| ${COMMON_MESON_FLAGS} |
| ${EXTRA_MESON_FLAGS} |
| -Dx11-backend=false -Dwayland-backend=true -Dbroadway-backend=false |
| ${FEATURE_FLAGS} |
| _build |
| - meson compile -C _build |
| - .gitlab-ci/run-tests.sh _build wayland_minimal gtk:gsk |
| |
| fedora-mingw64: |
| extends: |
| - .build-fedora-default |
| - .meson-subprojects |
| stage: build |
| needs: ["container:fedora"] |
| script: |
| - .gitlab-ci/show-info-linux.sh |
| - export PATH="$HOME/.local/bin:$PATH" |
| - pip3 install --user meson==1.8.2 |
| - meson -Dintrospection=disabled -Dgraphene:introspection=disabled _build |
| - meson compile -C _build |
| |
| .mingw-defaults: |
| 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-ucrt64: |
| extends: .mingw-defaults |
| needs: [] |
| variables: |
| MSYSTEM: "UCRT64" |
| CHERE_INVOKING: "yes" |
| artifacts: |
| when: always |
| expose_as: 'Windows_DLL_MSYS2_64_bit_toolchain' |
| paths: |
| - "${CI_PROJECT_DIR}/_build/gtkdll.tar.gz" |
| - "${CI_PROJECT_DIR}/_build/gtk/GdkWin32-4.0.gir" |
| |
| macos-arm64: |
| stage: build |
| tags: |
| - macos |
| - arm64 |
| needs: [] |
| cache: |
| - key: $CI_JOB_NAME_SLUG |
| paths: |
| - ccache |
| variables: |
| BACKEND_FLAGS: "" |
| FEATURE_FLAGS: "-Dvulkan=disabled -Daccesskit=enabled -Dgobject-introspection:werror=false -Dintrospection=enabled -Dmedia-gstreamer=disabled" |
| EXTRA_MESON_FLAGS: "" |
| # additional settings |
| CCACHE_MAXSIZE: "250Mi" |
| CCACHE_DIR: $CI_PROJECT_DIR/ccache |
| PKG_CONFIG_PATH: $CI_PROJECT_DIR/.venv/lib/pkgconfig |
| SDKROOT: /opt/sdks/MacOSX11.3.sdk |
| before_script: |
| - .gitlab-ci/show-info-macos.sh |
| # Setup the virtual environment with meson and ninja. Add ccache to speed |
| # up the build. |
| - | |
| python3 -m venv .venv |
| source .venv/bin/activate |
| pip3 install meson==1.9.0 ninja==1.11.1.1 certifi==2025.4.26 |
| ln -s /opt/ccache/ccache .venv/bin |
| # The introspection feature requires pkg-config and bison. |
| - curl -L $CI_API_V4_URL/projects/30437/packages/generic/pkgconfig/v0.29.2+10/pkg-config-0.29.2+10_$(uname -m).tar.xz | tar -C .venv -xJ |
| - curl -L $CI_API_V4_URL/projects/30438/packages/generic/bison/v3.8.2+3/bison-3.8.2+3_$(uname -m).tar.xz | tar -C .venv -xJ |
| # The AccessKit feature requires Rust and toml2json. |
| - ln -s /opt/rustup/toolchains/1.86.0-aarch64-apple-darwin/bin/* .venv/bin |
| - pip3 install toml2json==0.1.0 |
| # Meson cannot handle circular dependencies in subprojects, so we have to build GLib and |
| # GObject Introspection ourselves. With crudini we ensure using the same versions as |
| # defined in the subproject wrappers. |
| - pip3 install crudini==0.9.6 |
| - | |
| pip3 install packaging==24.2 |
| git clone --depth 1 --branch $(crudini --get subprojects/glib.wrap wrap-git revision) https://gitlab.gnome.org/gnome/glib.git |
| meson setup -Dprefix=${CI_PROJECT_DIR}/.venv -Dintrospection=disabled -Dtests=false _glib_build glib |
| meson compile -C _glib_build |
| meson install -C _glib_build |
| cp -rvf "${CI_PROJECT_DIR}/_glib_build/meson-logs" "${CI_PROJECT_DIR}/_glib_build/meson-logs.no-introspection" |
| - | |
| git clone --depth 1 --branch $(crudini --get subprojects/gobject-introspection.wrap wrap-git revision) --recurse-submodules https://gitlab.gnome.org/gnome/gobject-introspection.git |
| meson setup -Dprefix=${CI_PROJECT_DIR}/.venv _gi_build gobject-introspection |
| meson compile -C _gi_build |
| meson install -C _gi_build |
| - | |
| meson configure -Dintrospection=enabled _glib_build |
| meson compile -C _glib_build |
| meson install -C _glib_build |
| script: |
| - meson setup |
| ${COMMON_MESON_FLAGS} |
| ${EXTRA_MESON_FLAGS} |
| ${BACKEND_FLAGS} |
| ${FEATURE_FLAGS} |
| _build |
| - meson compile -C _build |
| artifacts: |
| when: always |
| paths: |
| - "${CI_PROJECT_DIR}/_glib_build/meson-logs.no-introspection" |
| - "${CI_PROJECT_DIR}/_glib_build/meson-logs" |
| - "${CI_PROJECT_DIR}/_build/meson-logs" |
| - "${CI_PROJECT_DIR}/_build/gtk/GdkMacos-4.0.gir" |
| |
| vs2019-x64: |
| # TODO: Uncomment this when ready to merge. |
| # rules: |
| # - if: $CI_PROJECT_NAMESPACE == "GNOME" |
| stage: build |
| tags: |
| - win32-ps |
| needs: [] |
| variables: |
| script: |
| - .gitlab-ci/test-msvc.bat ${COMMON_MESON_FLAGS} |
| artifacts: |
| when: always |
| paths: |
| - "${CI_PROJECT_DIR}/_build/meson-logs" |
| |
| android: |
| extends: |
| - .distribution.android |
| stage: build |
| parallel: |
| matrix: |
| - ARCH: [ "aarch64", "x86_64" ] |
| needs: ['container:android'] |
| variables: |
| EXTRA_MESON_FLAGS: "-Dgperf:werror=false" |
| BACKEND_FLAGS: "-Dandroid-backend=true" |
| FEATURE_FLAGS: "-Dmedia-gstreamer=disabled" |
| before_script: |
| - .gitlab-ci/show-info-linux.sh |
| # We aren't actually using pixiewood here, we just make get the ${ARCH}.cross, android.cross, fontconfig.wrap and glib/hack.patch files. |
| - git clone https://github.com/sp1ritCS/gtk-android-builder.git pixiewood |
| - cp -f pixiewood/prepare/wraps/fontconfig/fontconfig.wrap subprojects/ |
| # glib/hack makes the g_set_user_dirs public. Drop once glib has android support |
| - mkdir -p subprojects/packagefiles/ |
| - cp -f pixiewood/prepare/wraps/glib/hack.patch subprojects/packagefiles/glib_hack.patch |
| - sed -i 's/\[provide\]/diff_files = glib_hack.patch\n\n\0/' subprojects/glib.wrap |
| # Drop this as soon as Debian/the container has meson >= 1.7.0 |
| - git clone --depth 1 https://github.com/mesonbuild/meson.git --branch 1.8.2 |
| script: |
| - ./meson/meson.py setup |
| --cross-file "${ANDROID_HOME}/toolchain.cross" |
| --cross-file "pixiewood/prepare/arch/$ARCH.cross" |
| --cross-file "pixiewood/prepare/android.cross" |
| ${COMMON_MESON_FLAGS} |
| ${EXTRA_MESON_FLAGS} |
| ${BACKEND_FLAGS} |
| ${FEATURE_FLAGS} |
| _build |
| - ./meson/meson.py compile -C _build |
| artifacts: |
| when: always |
| paths: |
| - "${CI_PROJECT_DIR}/_build/meson-logs" |
| |
| .android-defaults: |
| extends: |
| - .distribution.android |
| stage: android |
| artifacts: |
| paths: |
| - apks |
| expire_in: 1 day |
| rules: |
| # Treat Android application bundle build job like a normal job on main or when marge is checking the changeset |
| - if: $CI_COMMIT_BRANCH == "main" || $GITLAB_USER_LOGIN == "marge-bot" || $CI_MERGE_REQUEST_ASSIGNEES == "marge-bot" |
| # normal CI job |
| - if: $CI_COMMIT_BRANCH != "main" && $GITLAB_USER_LOGIN != "marge-bot" && $CI_MERGE_REQUEST_ASSIGNEES != "marge-bot" |
| when: "manual" |
| allow_failure: true |
| needs: ['container:android'] |
| before_script: |
| - .gitlab-ci/show-info-linux.sh |
| - git clone https://github.com/sp1ritCS/gtk-android-builder.git pixiewood |
| - git clone --depth 1 https://github.com/mesonbuild/meson.git # TODO: affix to a tag as soon as one exists that contains 98b1980 |
| - git clone --depth 1 https://github.com/sp1ritCS/mini-studio.git |
| script: |
| # This should be included in the repo itself once it's been merged into meson and released |
| - > |
| find demos/ -type f -name 'meson.build' -exec sed -i "s/^executable.*$/\0 android_exe_type: 'application',/" {} \; |
| - ./pixiewood/pixiewood prepare --release -s "${ANDROID_HOME}" -a ./mini-studio --meson ./meson/meson.py "build-aux/android/${APPID}.xml" |
| - ./pixiewood/pixiewood generate |
| - ./pixiewood/pixiewood build |
| - mkdir -p apks/${APPID}/ |
| - cp .pixiewood/android/app/build/outputs/apk/release/* apks/${APPID}/ |
| |
| android:demo: |
| extends: '.android-defaults' |
| variables: |
| APPID: org.gtk.Demo4 |
| |
| android-signer: |
| extends: |
| - .distribution.android |
| stage: android |
| artifacts: |
| paths: |
| - apks |
| expire_in: 1 day |
| needs: [ 'android:demo' ] |
| before_script: |
| - | |
| if [ -z ${ANDROID_KEYSTORE_ENC} ]; then |
| export ANDROID_KEYSTORE_LOCATION=".gitlab-ci/debug.keystore" |
| export ANDROID_KEYSTORE_KEY="android" |
| export ANDROID_APK_SUFFIX="debugsigned" |
| else |
| export ANDROID_KEYSTORE_LOCATION="keystore.jks" |
| echo "${ANDROID_KEYSTORE_ENC}" | base64 -d > ${ANDROID_KEYSTORE_LOCATION} |
| export ANDROID_APK_SUFFIX="signed" |
| fi |
| script: |
| - find apks/ -type f -name '*.apk' -exec sh -c '${ANDROID_HOME}/build-tools/${ANDROID_SDKVER}/apksigner sign --ks "${ANDROID_KEYSTORE_LOCATION}" --ks-pass "env:ANDROID_KEYSTORE_KEY" --in "$0" --out `echo "$0" | sed s/unsigned/${ANDROID_APK_SUFFIX}/g`' {} \; -delete |
| |
| .flatpak-defaults: |
| image: "quay.io/gnome_infrastructure/gnome-runtime-images:gnome-master" |
| stage: flatpak |
| allow_failure: true |
| tags: |
| - flatpak |
| artifacts: |
| paths: |
| - "${APPID}-dev.flatpak" |
| - 'repo.tar' |
| expire_in: 1 day |
| rules: |
| # Only build Flatpak bundles automatically on main |
| - if: $CI_COMMIT_BRANCH == "main" |
| - if: $CI_COMMIT_BRANCH != "main" |
| when: "manual" |
| script: |
| - bash -x ./.gitlab-ci/flatpak-build.sh "${APPID}" |
| |
| flatpak:demo: |
| extends: '.flatpak-defaults' |
| needs: [] |
| variables: |
| APPID: org.gtk.Demo4 |
| |
| flatpak:demo:aarch64: |
| extends: '.flatpak-defaults' |
| needs: [] |
| tags: |
| - flatpak-aarch64 |
| variables: |
| APPID: org.gtk.Demo4 |
| |
| flatpak:widget-factory: |
| extends: '.flatpak-defaults' |
| needs: [] |
| variables: |
| APPID: org.gtk.WidgetFactory4 |
| |
| flatpak:widget-factory:aarch64: |
| extends: '.flatpak-defaults' |
| needs: [] |
| tags: |
| - flatpak-aarch64 |
| variables: |
| APPID: org.gtk.WidgetFactory4 |
| |
| flatpak:node-editor: |
| extends: '.flatpak-defaults' |
| needs: [] |
| variables: |
| APPID: org.gtk.gtk4.NodeEditor |
| |
| flatpak:node-editor:aarch64: |
| extends: '.flatpak-defaults' |
| needs: [] |
| tags: |
| - flatpak-aarch64 |
| variables: |
| APPID: org.gtk.gtk4.NodeEditor |
| |
| flatpak:icon-editor: |
| extends: '.flatpak-defaults' |
| needs: [] |
| variables: |
| APPID: org.gtk.Shaper |
| |
| flatpak:icon-editor:aarch64: |
| extends: '.flatpak-defaults' |
| needs: [] |
| tags: |
| - flatpak-aarch64 |
| variables: |
| APPID: org.gtk.Shaper |
| |
| # 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' |
| needs: ['flatpak:demo'] |
| |
| nightly demo aarch64: |
| extends: '.publish_nightly' |
| needs: ['flatpak:demo:aarch64'] |
| |
| nightly factory: |
| extends: '.publish_nightly' |
| needs: ['flatpak:widget-factory'] |
| |
| nightly factory aarch64: |
| extends: '.publish_nightly' |
| needs: ['flatpak:widget-factory:aarch64'] |
| |
| nightly node-editor: |
| extends: '.publish_nightly' |
| needs: ['flatpak:node-editor'] |
| |
| nightly node-editor aarch64: |
| extends: '.publish_nightly' |
| needs: ['flatpak:node-editor:aarch64'] |
| |
| nightly icon-editor: |
| extends: '.publish_nightly' |
| needs: ['flatpak:icon-editor'] |
| |
| nightly icon-editor aarch64: |
| extends: '.publish_nightly' |
| needs: ['flatpak:icon-editor:aarch64'] |
| |
| static-scan: |
| extends: |
| - .distribution.fedora |
| stage: analysis |
| needs: ['container:fedora'] |
| variables: |
| EXTRA_MESON_FLAGS: "--buildtype=debug" |
| script: |
| - export PATH="$HOME/.local/bin:$PATH" |
| - meson setup |
| ${COMMON_MESON_FLAGS} |
| ${EXTRA_MESON_FLAGS} |
| ${BACKEND_FLAGS} |
| ${FEATURE_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 |
| # and f16c, since they are incompatible with asan |
| asan-build: |
| extends: |
| - .test-runner |
| - .build-fedora-default |
| tags: [ asan ] |
| stage: analysis |
| needs: ['container:fedora'] |
| script: |
| - export PATH="$HOME/.local/bin:$PATH" |
| - CC=clang meson setup |
| --buildtype=debugoptimized |
| -Db_sanitize=address |
| -Db_lundef=false |
| -Dbuild-demos=false |
| -Dbuild-tests=false |
| -Dbuild-examples=false |
| -Dintrospection=disabled |
| -Df16c=disabled |
| _build |
| - meson compile -C_build |
| # Work around https://gitlab.freedesktop.org/mesa/mesa/-/issues/12666 |
| - rm -rf _build/subprojects/wayland/src/libwayland-server* |
| - .gitlab-ci/run-tests.sh _build wayland gtk |
| |
| reference: |
| extends: |
| - .distribution.fedora |
| stage: docs |
| needs: ['container:fedora'] |
| script: |
| - export PATH="$HOME/.local/bin:$PATH" |
| - meson setup |
| ${COMMON_MESON_FLAGS} |
| --buildtype=release |
| --force-fallback-for=gdk-pixbuf,pango |
| -Dintrospection=enabled |
| -Ddocumentation=true |
| -Dman-pages=true |
| -Dgdk-pixbuf:gtk_doc=true |
| -Dpango:documentation=true |
| -Dbuild-demos=true |
| -Dbuild-examples=false |
| -Dbuild-tests=false |
| -Dbuild-testsuite=false |
| _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/docs/reference/gtk/*.html _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: |
| extends: |
| - .distribution.fedora |
| stage: publish |
| interruptible: false |
| 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" |
| rules: |
| - if: $CI_COMMIT_REF_NAME == "main" |