1include: 2 - project: 'gnome/citemplates' 3 file: 'flatpak/flatpak_ci_initiative.yml' 4 5stages: 6 - build 7 - analysis 8 - docs 9 - flatpak 10 - publish 11 - deploy 12 13.cache-paths: &cache-paths 14 paths: 15 - _ccache/ 16 - subprojects/gdk-pixbuf/ 17 - subprojects/glib/ 18 - subprojects/graphene/ 19 - subprojects/libepoxy/ 20 - subprojects/pango/ 21 22# Common variables 23variables: 24 COMMON_MESON_FLAGS: "-Dwerror=true -Dglib:werror=false -Dpango:werror=false -Dgtk-doc:werror=false -Dwayland-protocols:werror=false -Dsysprof:werror=false" 25 BACKEND_FLAGS: "-Dx11-backend=true -Dwayland-backend=true -Dbroadway-backend=true" 26 FEATURE_FLAGS: "-Dvulkan=enabled -Dcloudproviders=enabled" 27 MESON_TEST_TIMEOUT_MULTIPLIER: 3 28 FEDORA_IMAGE: "registry.gitlab.gnome.org/gnome/gtk/fedora:v33" 29 FLATPAK_IMAGE: "registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:master" 30 31.only-default: 32 only: 33 - branches 34 except: 35 - tags 36 37style-check-diff: 38 extends: .only-default 39 image: $FEDORA_IMAGE 40 stage: .pre 41 allow_failure: true 42 script: 43 - .gitlab-ci/run-style-check-diff.sh 44 45.build-fedora-default: 46 extends: .only-default 47 image: $FEDORA_IMAGE 48 artifacts: 49 when: always 50 reports: 51 junit: 52 - "${CI_PROJECT_DIR}/_build/report-x11.xml" 53 - "${CI_PROJECT_DIR}/_build/report-wayland.xml" 54 - "${CI_PROJECT_DIR}/_build/report-broadway.xml" 55 name: "gtk-${CI_COMMIT_REF_NAME}" 56 paths: 57 - "${CI_PROJECT_DIR}/_build/meson-logs" 58 - "${CI_PROJECT_DIR}/_build/report*.xml" 59 - "${CI_PROJECT_DIR}/_build/report*.html" 60 - "${CI_PROJECT_DIR}/_build/testsuite/reftests/output/*/*.png" 61 - "${CI_PROJECT_DIR}/_build/testsuite/tools/output/*/*" 62 - "${CI_PROJECT_DIR}/_build/testsuite/gsk/compare/*/*/*.png" 63 - "${CI_PROJECT_DIR}/_build/testsuite/css/output/*/*.syscap" 64 - "${CI_PROJECT_DIR}/_build_hello/meson-logs" 65 cache: 66 key: "$CI_JOB_NAME" 67 paths: 68 - _ccache/ 69 - subprojects/gdk-pixbuf/ 70 - subprojects/glib/ 71 - subprojects/graphene/ 72 - subprojects/libepoxy/ 73 - subprojects/pango/ 74 75fedora-x86_64: 76 extends: .build-fedora-default 77 stage: build 78 needs: [] 79 variables: 80 EXTRA_MESON_FLAGS: "--buildtype=debug --default-library=both" 81 script: 82 - .gitlab-ci/show-info-linux.sh 83 - meson subprojects update 84 - mkdir _install 85 - meson --prefix=${CI_PROJECT_DIR}/_install 86 ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} ${BACKEND_FLAGS} ${FEATURE_FLAGS} 87 _build 88 - meson compile -C _build 89 - meson install -C _build 90 - PKG_CONFIG_PATH=${CI_PROJECT_DIR}/_install/lib64/pkgconfig:${CI_PROJECT_DIR}/_install/share/pkgconfig meson setup _build_hello examples/hello 91 - meson compile -C _build_hello 92 - .gitlab-ci/run-tests.sh _build x11 93 - .gitlab-ci/run-tests.sh _build wayland 94 - .gitlab-ci/run-tests.sh _build broadway 95 96release-build: 97 extends: .build-fedora-default 98 stage: build 99 needs: [] 100 variables: 101 EXTRA_MESON_FLAGS: "--buildtype=release" 102 script: 103 - .gitlab-ci/show-info-linux.sh 104 - meson subprojects update 105 - meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} ${BACKEND_FLAGS} ${FEATURE_FLAGS} 106 _build 107 - ninja -C _build 108 - .gitlab-ci/run-tests.sh _build x11 109 110installed-tests: 111 extends: .build-fedora-default 112 stage: build 113 needs: [] 114 variables: 115 EXTRA_MESON_FLAGS: "--prefix=/usr --libdir=/usr/lib64 -Dinstall-tests=true" 116 G_TEST_ACCESSIBLE: 1 117 script: 118 - .gitlab-ci/show-info-linux.sh 119 - meson subprojects update 120 - meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} ${BACKEND_FLAGS} ${FEATURE_FLAGS} 121 _build 122 - ninja -C _build 123 - sudo ninja -C _build install 124 - dbus-run-session xvfb-run -a -s "-screen 0 1024x768x24" 125 gnome-desktop-testing-runner 126 --report-directory=_build/installed-tests-report/failed/ 127 --parallel=0 128 gtk-4.0 129 artifacts: 130 paths: 131 - "_build/installed-tests-report/" 132 133 134.mingw-defaults: 135 extends: .only-default 136 stage: build 137 tags: 138 - win32-ps 139 script: 140 - C:\msys64\usr\bin\pacman --noconfirm -Syyuu 141 - C:\msys64\usr\bin\bash -lc "bash -x ./.gitlab-ci/test-msys2.sh" 142 cache: 143 key: "$CI_JOB_NAME" 144 paths: 145 - _ccache/ 146 - subprojects/gdk-pixbuf/ 147 - subprojects/glib/ 148 - subprojects/graphene/ 149 - subprojects/libepoxy/ 150 - subprojects/pango/ 151 152msys2-mingw64: 153 extends: .mingw-defaults 154 needs: [] 155 variables: 156 MSYSTEM: "MINGW64" 157 CHERE_INVOKING: "yes" 158 159macos: 160 extends: .only-default 161 only: 162 - branches@GNOME/gtk 163 stage: build 164 tags: 165 - macos 166 needs: [] 167 before_script: 168 - bash .gitlab-ci/show-info-osx.sh 169 - pip3 install --user meson==0.56 170 - pip3 install --user ninja 171 - export PATH=/Users/gitlabrunner/Library/Python/3.7/bin:$PATH 172 - export MESON_FORCE_BACKTRACE=1 173 script: 174 - meson -Dx11-backend=false 175 -Dbroadway-backend=true 176 -Dmacos-backend=true 177 -Dmedia-gstreamer=disabled 178 -Dintrospection=disabled 179 -Dcpp_std=c++11 180 -Dpixman:tests=disabled 181 _build 182 - ninja -C _build 183 artifacts: 184 when: always 185 paths: 186 - "${CI_PROJECT_DIR}/_build/meson-logs" 187 188vs2017-x64: 189 extends: .only-default 190 # TODO: Uncomment this when ready to merge. 191 #only: 192 # - branches@GNOME/gtk 193 stage: build 194 tags: 195 - win32-ps 196 needs: [] 197 script: 198 - .gitlab-ci/test-msvc.bat 199 artifacts: 200 when: always 201 paths: 202 - "${CI_PROJECT_DIR}/_build/meson-logs" 203 204.flatpak-defaults: 205 image: $FLATPAK_IMAGE 206 stage: flatpak 207 allow_failure: true 208 tags: 209 - flatpak 210 artifacts: 211 paths: 212 - "${APPID}-dev.flatpak" 213 - 'repo.tar' 214 expire_in: 1 day 215 script: 216 - bash -x ./.gitlab-ci/flatpak-build.sh "${APPID}" 217 218# Manual jobs, for branches and MRs 219.flatpak-manual: 220 extends: .flatpak-defaults 221 when: manual 222 223# Only build Flatpak bundles automatically on master 224.flatpak-master: 225 extends: .flatpak-defaults 226 only: 227 - master 228 229flatpak-manual:demo: 230 extends: .flatpak-manual 231 needs: [] 232 variables: 233 APPID: org.gtk.Demo4 234 235flatpak-master:demo: 236 extends: .flatpak-master 237 needs: [] 238 variables: 239 APPID: org.gtk.Demo4 240 241flatpak-manual:widget-factory: 242 extends: .flatpak-manual 243 needs: [] 244 variables: 245 APPID: org.gtk.WidgetFactory4 246 247flatpak-master:widget-factory: 248 extends: .flatpak-master 249 needs: [] 250 variables: 251 APPID: org.gtk.WidgetFactory4 252 253flatpak-manual:icon-browser: 254 extends: .flatpak-manual 255 needs: [] 256 variables: 257 APPID: org.gtk.IconBrowser4 258 259flatpak-master:icon-browser: 260 extends: .flatpak-master 261 needs: [] 262 variables: 263 APPID: org.gtk.IconBrowser4 264 265# Publish the demo apps to the GNOME Nightly repo 266# https://wiki.gnome.org/Apps/Nightly 267# https://gitlab.gnome.org/GNOME/Initiatives/-/wikis/DevOps-with-Flatpak 268nightly demo: 269 extends: '.publish_nightly' 270 dependencies: ['flatpak-master:demo'] 271 needs: ['flatpak-master:demo'] 272 273nightly factory: 274 extends: '.publish_nightly' 275 dependencies: ['flatpak-master:widget-factory'] 276 needs: ['flatpak-master:widget-factory'] 277 278nightly icon-browser: 279 extends: '.publish_nightly' 280 dependencies: ['flatpak-master:icon-browser'] 281 needs: ['flatpak-master:icon-browser'] 282 283static-scan: 284 image: $FEDORA_IMAGE 285 stage: analysis 286 needs: [] 287 variables: 288 EXTRA_MESON_FLAGS: "--buildtype=debug" 289 script: 290 - meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} _scan_build 291 - ninja -C _scan_build scan-build 292 artifacts: 293 paths: 294 - _scan_build/meson-logs 295 allow_failure: true 296 297# Run tests with the address sanitizer. We need to turn off introspection, 298# since it is incompatible with asan 299asan-build: 300 image: $FEDORA_IMAGE 301 tags: [ asan ] 302 stage: analysis 303 needs: [] 304 variables: 305 script: 306 - CC=clang meson --buildtype=debugoptimized -Db_sanitize=address -Db_lundef=false -Dintrospection=disabled _build 307 - ninja -C _build 308 - .gitlab-ci/run-tests.sh _build wayland 309 artifacts: 310 paths: 311 - _build/meson-logs 312 allow_failure: true 313 314reference: 315 image: $FEDORA_IMAGE 316 stage: docs 317 needs: [] 318 variables: 319 EXTRA_MESON_FLAGS: "--buildtype=release --force-fallback-for=gdk-pixbuf,pango" 320 script: 321 - meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} -Dgtk_doc=true -Dgdk-pixbuf:gtk_doc=true -Dpango:gtk_doc=true _build 322 - meson compile -C _build 323 - mkdir -p _reference/ 324 - mv _build/docs/reference/gdk/gdk4/ _reference/gdk4/ 325 - mv _build/docs/reference/gdk/gdk4-x11/ _reference/gdk4-x11/ 326 - mv _build/docs/reference/gdk/gdk4-wayland/ _reference/gdk4-wayland/ 327 - mv _build/docs/reference/gsk/gsk4/ _reference/gsk4/ 328 - mv _build/docs/reference/gtk/gtk4/ _reference/gtk4/ 329 - mv _build/subprojects/pango/docs/Pango/ _reference/Pango/ 330 - mv _build/subprojects/pango/docs/PangoCairo/ _reference/PangoCairo/ 331 - mv _build/subprojects/pango/docs/PangoFc/ _reference/PangoFc/ 332 - mv _build/subprojects/pango/docs/PangoFT2/ _reference/PangoFT2/ 333 - mv _build/subprojects/pango/docs/PangoOT/ _reference/PangoOT/ 334 - mv _build/subprojects/pango/docs/PangoXft/ _reference/PangoXft/ 335 - mv _build/subprojects/gdk-pixbuf/docs/gdk-pixbuf/ _reference/gdk-pixbuf/ 336 - mv _build/subprojects/gdk-pixbuf/docs/gdk-pixdata/ _reference/gdk-pixdata/ 337 artifacts: 338 paths: 339 - _reference 340 341publish-docs: 342 stage: publish 343 needs: ['reference'] 344 script: 345 - "curl -X POST -F token=${PAGES_TRIGGER_TOKEN} -F ref=docs-gtk-org https://gitlab.gnome.org/api/v4/projects/665/trigger/pipeline" 346 only: 347 refs: 348 - master 349