Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Gnome/   (Gnome Linux Desktop Version 4.23.2©)  Datei vom 30.5.2026 mit Größe 24 kB image not shown  

Quelle  .gitlab-ci.yml   Sprache: unbekannt

 
Spracherkennung für: .yml vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

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"
  - component: "gitlab.gnome.org/GNOME/citemplates/goblint@master"
    inputs:
      job-stage: "analysis"
  - component: "gitlab.gnome.org/GNOME/citemplates/goblint@master"
    inputs:
      job-stage: "analysis"
      job-name: "gobject-linter-latest"
      image-ref: "ghcr.io/bilelmoussaoui/gobject-linter:latest"
      allow-failure: true

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 -Dlibxml2: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: '2026-06-24.0'
    FDO_DISTRIBUTION_VERSION: 44
    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
      glibc-langpack-en
      graphviz
      libasan
      libcloudproviders-devel
      libubsan
      mesa-vulkan-drivers
      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
      tinysparql-devel
      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 \;
    VK_LOADER_DRIVERS_DISABLE: "*power*"

.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: '2026-04-27.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/testsuite/svg/*/*.diff"
      - "${CI_PROJECT_DIR}/_build/testsuite/svg/*/*.svg"
      - "${CI_PROJECT_DIR}/_build/testsuite/svg/*/*.nodes"
      - "${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"
      - "${CI_PROJECT_DIR}/_build/testsuite/*.md"

.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/ \;

gnomeos-x86_64:
  extends:
    - .test-runner
  needs: []
  stage: build
  image: "quay.io/gnome_infrastructure/gnome-build-meta:core-nightly"
  variables:
    EXTRA_MESON_FLAGS: "--buildtype=debug --default-library=both"
  script:
    - .gitlab-ci/show-info-linux.sh
    - export PATH="$HOME/.local/bin:$PATH"
    - meson setup
            --prefix=/usr
            --libdir=lib/$(gcc -print-multiarch)
            ${EXTRA_MESON_FLAGS}
            _build
    - meson compile -C _build
    - .gitlab-ci/collect-info-gtk.sh _build
    - .gitlab-ci/run-tests.sh _build wayland gtk failing

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/collect-info-gtk.sh _build
    - .gitlab-ci/run-tests.sh _build x11 gtk failing
    # only repeat test runs that are likely affected by test setups
    - .gitlab-ci/run-tests.sh _build wayland_gl gtk:gdk,gtk:gsk-gl failing

release-build:
  extends:
    - .test-runner
    - .build-fedora-default
  stage: build
  needs: ['container:fedora']
  variables:
    EXTRA_MESON_FLAGS: "--buildtype=release -Dtracker=enabled"
  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
    - .gitlab-ci/collect-info-gtk.sh _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 failing
    - 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/collect-info-gtk.sh _build
    - .gitlab-ci/run-tests.sh _build wayland_minimal gtk:gsk failing

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.11.1
    - 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
  when: manual
  needs: []
  variables:
    MSYSTEM: "UCRT64"
    CHERE_INVOKING: "yes"
  artifacts:
    when: always
    expose_as: 'Windows_DLL_MSYS2_UCRT64_toolchain'
    paths:
      - "${CI_PROJECT_DIR}/_build/gtkdll.tar.gz"
      - "${CI_PROJECT_DIR}/_build/gtk/GdkWin32-4.0.gir"

msys2-clang64:
  extends: .mingw-defaults
  needs: []
  variables:
    MSYSTEM: "CLANG64"
    CHERE_INVOKING: "yes"
  artifacts:
    when: always
    expose_as: 'Windows_DLL_MSYS2_CLANG64_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
    ORKA_RUNNER: sonoma-5
    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.11.1 ninja==1.11.1.1
      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.93.1-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}
  cache:
    key: "$CI_JOB_NAME"
    paths:
      - _ccache/
  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 --branch android36 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
  script:
    - meson 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 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 --branch android36 pixiewood
    - git clone --depth 1 https://github.com/sp1ritCS/mini-studio.git
  script:
    - ./pixiewood/pixiewood prepare --release -s "${ANDROID_HOME}" -a ./mini-studio "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:nodeeditor:
  extends: '.android-defaults'
  variables:
    APPID: org.gtk.gtk4.NodeEditor

android-signer:
  extends:
    - .distribution.android
  stage: android
  artifacts:
    paths:
      - apks
    expire_in: 1 day
  needs: [ 'android:demo', 'android:nodeeditor' ]
  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:
    - export DOCS_TRIGGER_TOKEN=$( cat "${DOCS_TRIGGER_TOKEN_FILE}" )
    - "curl -X POST -F token=${DOCS_TRIGGER_TOKEN} -F ref=docs-gtk-org https://gitlab.gnome.org/api/v4/projects/665/trigger/pipeline"
  rules:
    - if: $CI_COMMIT_REF_NAME == "main"

[Dauer der Verarbeitung: 0.20 Sekunden, vorverarbeitet 2026-07-02]