The open source OpenXR runtime
1# SPDX-License-Identifier: CC0-1.0
2# SPDX-FileCopyrightText: 2018-2024 Collabora, Ltd. and the Monado contributors
3
4###############################################
5# GENERATED - DO NOT EDIT
6# see .gitlab-ci/ci.template, etc instead
7###############################################
8
9workflow:
10 rules:
11 # Switch between branch and merge request pipelines to avoid duplication
12 - if: $CI_PIPELINE_SOURCE == "merge_request_event"
13 - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
14 when: never
15 - if: $CI_COMMIT_BRANCH
16
17variables:
18 FDO_UPSTREAM_REPO: "monado/monado"
19
20include:
21 - project: "freedesktop/ci-templates"
22 ref: 185ede0e9b9b1924b92306ab8b882a6294e92613
23 file:
24 - "/templates/debian.yml"
25 - "/templates/ubuntu.yml"
26 - "/templates/arch.yml"
27 - "/templates/alpine.yml"
28 # - local: .gitlab-ci/containers/ci-container-prep.yml
29
30 # This include is for compatibility with the fdo CI restrictions/checks
31 # needed due to https://gitlab.freedesktop.org/freedesktop/freedesktop/-/issues/438
32 - local: .gitlab-ci/ci-rules.yml
33
34stages:
35 - container_prep
36 - verify
37 - build
38 - check
39 - package
40 - reprepro
41 - pages
42 - deploy
43
44###
45# Extra rules for packaging
46.monado.packaging.conditions:
47 rules:
48 # Only the default branch of the "upstream" repo on push.
49 - if: $CI_PROJECT_PATH == $FDO_UPSTREAM_REPO && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "push"
50
51###
52###
53# Windows container-related jobs (prep and usage)
54
55.monado.common_variables.windows:vs2022:
56 inherit:
57 default: false
58 variables:
59 MONADO_WIN_BASE_TAG: "20251127.3"
60 MONADO_WIN_MAIN_TAG: "20251127.3"
61 MONADO_BASE_IMAGE_PATH: "win2022/vs2022_base"
62 MONADO_MAIN_IMAGE_PATH: "win2022/vs2022"
63
64.monado.variables.windows:vs2022:
65 inherit:
66 default: false
67 extends:
68 - .monado.common_variables.windows:vs2022
69 variables:
70 MONADO_IMAGE_PATH: "$MONADO_MAIN_IMAGE_PATH"
71 FDO_DISTRIBUTION_TAG: "$MONADO_WIN_MAIN_TAG"
72 MONADO_IMAGE: "$CI_REGISTRY_IMAGE/$MONADO_IMAGE_PATH:$FDO_DISTRIBUTION_TAG"
73 MONADO_UPSTREAM_IMAGE: "$CI_REGISTRY/$FDO_UPSTREAM_REPO/$MONADO_IMAGE_PATH:$FDO_DISTRIBUTION_TAG"
74
75# Shared container-building job
76.monado.windows.container_prep:
77 inherit:
78 default: false
79 tags:
80 - windows
81 - "2022"
82 - shell
83 variables:
84 GIT_STRATEGY: fetch
85 extends:
86 - .container-rules
87
88 stage: container_prep
89 script:
90 - |
91 .gitlab-ci\windows\monado_container.ps1 -RegistryUri "$CI_REGISTRY" -RegistryUsername "$CI_REGISTRY_USER" -UserImage "$MONADO_IMAGE" -UpstreamImage "$MONADO_UPSTREAM_IMAGE" -Dockerfile "$DOCKERFILE" -BaseImage "$MONADO_BASE_IMAGE" -BaseUpstreamImage "$MONADO_UPSTREAM_BASE_IMAGE" -Verbose
92
93# This container just installs Visual C++ Build Tools.
94win:container_prep:base:
95 extends:
96 - .monado.windows.container_prep
97 - .monado.common_variables.windows:vs2022
98 variables:
99 DOCKERFILE: Dockerfile.vs2022
100 MONADO_IMAGE_PATH: ${MONADO_BASE_IMAGE_PATH}
101 FDO_DISTRIBUTION_TAG: "$MONADO_WIN_BASE_TAG"
102 MONADO_IMAGE: "$CI_REGISTRY_IMAGE/$MONADO_IMAGE_PATH:$FDO_DISTRIBUTION_TAG"
103 MONADO_UPSTREAM_IMAGE: "$CI_REGISTRY/$FDO_UPSTREAM_REPO/$MONADO_IMAGE_PATH:$FDO_DISTRIBUTION_TAG"
104
105# This container adds other deps
106win:container_prep:
107 extends:
108 - .monado.windows.container_prep
109 - .monado.variables.windows:vs2022
110 needs:
111 - win:container_prep:base
112 variables:
113 DOCKERFILE: Dockerfile.build
114 MONADO_BASE_IMAGE: "$CI_REGISTRY_IMAGE/$MONADO_BASE_IMAGE_PATH:$MONADO_WIN_BASE_TAG"
115 MONADO_UPSTREAM_BASE_IMAGE: "$CI_REGISTRY/$FDO_UPSTREAM_REPO/$MONADO_BASE_IMAGE_PATH:$MONADO_WIN_BASE_TAG"
116
117# Base job to use a Windows build container
118.monado.image.windows:
119 tags:
120 - windows
121 - "2022"
122 - docker
123 extends:
124 - .monado.variables.windows:vs2022
125 - .build-rules
126 image: $MONADO_IMAGE
127
128
129
130# Variables for build and usage of Debian bookworm image
131.monado.variables.debian:bookworm:
132 variables:
133 FDO_DISTRIBUTION_VERSION: "bookworm"
134 FDO_DISTRIBUTION_TAG: "2025-10-01"
135
136# Variables for build and usage of Debian bullseye image
137.monado.variables.debian:bullseye:
138 variables:
139 FDO_DISTRIBUTION_VERSION: "bullseye"
140 FDO_DISTRIBUTION_TAG: "2025-01-08"
141
142# Variables for build and usage of Debian bookworm-ndk image
143.monado.variables.debian:bookworm-ndk:
144 variables:
145 FDO_DISTRIBUTION_VERSION: "bookworm"
146 FDO_DISTRIBUTION_TAG: "2025-05-24"
147 FDO_REPO_SUFFIX: ndk
148
149# Variables for build and usage of Ubuntu jammy image
150.monado.variables.ubuntu:jammy:
151 variables:
152 FDO_DISTRIBUTION_VERSION: "22.04"
153 FDO_DISTRIBUTION_TAG: "2025-01-11"
154
155# Variables for build and usage of Ubuntu noble image
156.monado.variables.ubuntu:noble:
157 variables:
158 FDO_DISTRIBUTION_VERSION: "24.04"
159 FDO_DISTRIBUTION_TAG: "2025-01-11"
160
161# Variables for build and usage of Arch image
162.monado.variables.arch:
163 variables:
164 FDO_DISTRIBUTION_TAG: "2025-04-18"
165
166# Variables for build and usage of Alpine image
167.monado.variables.alpine:
168 variables:
169 FDO_DISTRIBUTION_TAG: "2025-04-18"
170
171
172###
173# Container prep jobs
174# Make Debian bookworm image
175debian:bookworm:container_prep:
176 stage: container_prep
177 extends:
178 - .container-rules
179 - .monado.variables.debian:bookworm
180 - .fdo.container-build@debian # from ci-templates
181
182 variables:
183 FDO_DISTRIBUTION_PACKAGES: 'build-essential ca-certificates clang-format clang-tidy cmake codespell curl debhelper devscripts doxygen dput-ng gettext-base git glslang-tools graphviz libbluetooth-dev libbsd-dev libcjson-dev libdbus-1-dev libdistro-info-perl libegl1-mesa-dev libeigen3-dev libgl1-mesa-dev libglvnd-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev libhidapi-dev libopencv-dev libsdl2-dev libsystemd-dev libudev-dev libusb-1.0-0-dev libuvc-dev libv4l-dev libvulkan-dev libwayland-dev libx11-dev libx11-xcb-dev libxcb-randr0-dev libxrandr-dev libxxf86vm-dev ninja-build pahole pandoc patch pipx pkg-config python3 python3-click python3-pip reprepro unzip wayland-protocols wget'
184 FDO_DISTRIBUTION_EXEC: 'env FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash .gitlab-ci/i386_and_proclamation_container_prep.sh'
185
186# Make Debian bullseye image
187debian:bullseye:container_prep:
188 stage: container_prep
189 extends:
190 - .container-rules
191 - .monado.variables.debian:bullseye
192 - .fdo.container-build@debian # from ci-templates
193
194 variables:
195 FDO_DISTRIBUTION_PACKAGES: 'build-essential ca-certificates cmake curl debhelper devscripts dput-ng gettext-base git glslang-tools libbluetooth-dev libbsd-dev libcjson-dev libdbus-1-dev libdistro-info-perl libegl1-mesa-dev libeigen3-dev libgl1-mesa-dev libglvnd-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev libhidapi-dev libopencv-dev libsdl2-dev libsystemd-dev libudev-dev libusb-1.0-0-dev libuvc-dev libv4l-dev libvulkan-dev libwayland-dev libx11-dev libx11-xcb-dev libxcb-randr0-dev libxrandr-dev libxxf86vm-dev ninja-build pandoc patch pkg-config python3 unzip wayland-protocols wget'
196 FDO_DISTRIBUTION_EXEC: 'env FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash .gitlab-ci/bullseye_backports.sh'
197
198# Make Debian bookworm-ndk image
199debian:bookworm-ndk:container_prep:
200 stage: container_prep
201 extends:
202 - .container-rules
203 - .monado.variables.debian:bookworm-ndk
204 - .fdo.container-build@debian # from ci-templates
205
206 variables:
207 FDO_DISTRIBUTION_PACKAGES: 'ca-certificates cmake default-jdk-headless git glslang-tools libeigen3-dev meson ninja-build pkg-config python3 unzip wget'
208 FDO_DISTRIBUTION_EXEC: 'env FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash .gitlab-ci/android_container_prep.sh'
209
210# Make Ubuntu jammy image
211ubuntu:jammy:container_prep:
212 stage: container_prep
213 extends:
214 - .container-rules
215 - .monado.variables.ubuntu:jammy
216 - .fdo.container-build@ubuntu # from ci-templates
217
218 variables:
219 FDO_DISTRIBUTION_PACKAGES: 'build-essential ca-certificates cmake curl debhelper devscripts dput-ng gettext-base git glslang-tools libbluetooth-dev libbsd-dev libcjson-dev libdbus-1-dev libdistro-info-perl libegl1-mesa-dev libeigen3-dev libgl1-mesa-dev libglvnd-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev libhidapi-dev libopencv-dev libsdl2-dev libsystemd-dev libudev-dev libusb-1.0-0-dev libuvc-dev libv4l-dev libvulkan-dev libwayland-dev libx11-dev libx11-xcb-dev libxcb-randr0-dev libxrandr-dev libxxf86vm-dev ninja-build pandoc patch pkg-config python3 unzip wayland-protocols wget'
220
221# Make Ubuntu noble image
222ubuntu:noble:container_prep:
223 stage: container_prep
224 extends:
225 - .container-rules
226 - .monado.variables.ubuntu:noble
227 - .fdo.container-build@ubuntu # from ci-templates
228
229 variables:
230 FDO_DISTRIBUTION_PACKAGES: 'build-essential ca-certificates cmake curl debhelper devscripts dput-ng gettext-base git glslang-tools libbluetooth-dev libbsd-dev libcjson-dev libdbus-1-dev libdistro-info-perl libegl1-mesa-dev libeigen3-dev libgl1-mesa-dev libglvnd-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev libhidapi-dev libopencv-dev libsdl2-dev libsystemd-dev libudev-dev libusb-1.0-0-dev libuvc-dev libv4l-dev libvulkan-dev libwayland-dev libx11-dev libx11-xcb-dev libxcb-randr0-dev libxrandr-dev libxxf86vm-dev ninja-build pandoc patch pkg-config python3 unzip wayland-protocols wget'
231
232# Make Arch image
233arch:container_prep:
234 stage: container_prep
235 extends:
236 - .container-rules
237 - .monado.variables.arch
238 - .fdo.container-build@arch # from ci-templates
239
240 variables:
241 FDO_DISTRIBUTION_PACKAGES: 'base-devel bc bluez-libs boost check clang cmake diffutils doxygen eigen fmt gcc git glew glfw-x11 glslang glu graphviz gtest gtk3 hidapi libbsd libusb libxrandr mesa meson ninja opencv patch pipewire-jack pkgconfig python-attrs python-setuptools python3 qt6-base v4l-utils vulkan-headers vulkan-icd-loader wayland wget wireplumber'
242 FDO_DISTRIBUTION_EXEC: 'env FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash .gitlab-ci/install-arch-additional-deps.sh'
243
244# Make Alpine image
245alpine:container_prep:
246 stage: container_prep
247 extends:
248 - .container-rules
249 - .monado.variables.alpine
250 - .fdo.container-build@alpine # from ci-templates
251
252 variables:
253 FDO_DISTRIBUTION_PACKAGES: 'build-base cmake cmd:glslangValidator cmd:wayland-scanner doxygen eigen-dev eudev-dev graphviz libjpeg-turbo-dev libsurvive-dev libxrandr-dev mesa-dev opencv-dev openhmd-dev samurai sdl2-dev v4l-utils-dev vulkan-loader-dev wayland-dev wayland-protocols zlib-dev'
254
255
256###
257# Container usage base jobs
258
259# Base for using Debian bookworm image
260.monado.image.debian:bookworm:
261 extends:
262 - .monado.variables.debian:bookworm
263 - .fdo.distribution-image@debian # from ci-templates
264 - .build-rules
265
266
267# Base for using Debian bullseye image
268.monado.image.debian:bullseye:
269 extends:
270 - .monado.variables.debian:bullseye
271 - .fdo.distribution-image@debian # from ci-templates
272 - .build-rules
273
274
275# Base for using Debian bookworm-ndk image
276.monado.image.debian:bookworm-ndk:
277 extends:
278 - .monado.variables.debian:bookworm-ndk
279 - .fdo.suffixed-image@debian # from ci-templates
280 - .build-rules
281
282
283# Base for using Ubuntu jammy image
284.monado.image.ubuntu:jammy:
285 extends:
286 - .monado.variables.ubuntu:jammy
287 - .fdo.distribution-image@ubuntu # from ci-templates
288 - .build-rules
289
290
291# Base for using Ubuntu noble image
292.monado.image.ubuntu:noble:
293 extends:
294 - .monado.variables.ubuntu:noble
295 - .fdo.distribution-image@ubuntu # from ci-templates
296 - .build-rules
297
298
299# Base for using Arch image
300.monado.image.arch:
301 extends:
302 - .monado.variables.arch
303 - .fdo.distribution-image@arch # from ci-templates
304 - .build-rules
305
306
307# Base for using Alpine image
308.monado.image.alpine:
309 extends:
310 - .monado.variables.alpine
311 - .fdo.distribution-image@alpine # from ci-templates
312 - .build-rules
313
314
315
316# Style check job
317format-and-spellcheck:
318 extends:
319 - .monado.image.debian:bookworm
320
321 stage: verify
322 script:
323 - scripts/format-and-spellcheck.sh
324 artifacts:
325 paths:
326 - patches/
327 expire_in: 1 week
328 when: on_failure
329
330# Verify REUSE compliance
331reuse:
332 extends:
333 - .build-rules
334 stage: verify
335 image:
336 name: fsfe/reuse:latest
337 entrypoint: [""]
338 script:
339 - reuse lint
340
341
342debian:cmake:
343 stage: build
344 extends:
345 - .monado.packaging.conditions
346 - .monado.image.debian:bookworm
347
348 before_script:
349 - pushd doc/changes
350 - proclamation build vNEXT
351 - popd
352
353 script:
354
355 - .gitlab-ci/prebuild.sh
356 - .gitlab-ci/ci-cmake-build.sh -DBUILD_DOC=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
357 - cd build && ctest --output-on-failure
358 artifacts:
359 untracked: true
360 paths:
361 - build/doc/html/
362
363debian:cmake-no-opencv:
364 stage: build
365 extends:
366 - .monado.image.debian:bookworm
367
368 script:
369
370 - .gitlab-ci/prebuild.sh
371 - .gitlab-ci/ci-cmake-build.sh -DCMAKE_BUILD_TYPE=Debug -DXRT_HAVE_OPENCV=OFF
372 - mkdir -p "debian:cmake-no-opencv"
373 - pahole --sizes --class_name file://build/ipc-structs.txt build/src/xrt/targets/openxr/libopenxr_monado.so > "debian:cmake-no-opencv/ipc-sizes.txt"
374 - cd build && ctest --output-on-failure
375 artifacts:
376 paths:
377 - debian:cmake-no-opencv/ipc-sizes.txt
378
379debian:cmake-no-sdl2:
380 stage: build
381 extends:
382 - .monado.image.debian:bookworm
383
384 script:
385
386 - .gitlab-ci/prebuild.sh
387 - .gitlab-ci/ci-cmake-build.sh -DXRT_HAVE_SDL2=OFF
388 - cd build && ctest --output-on-failure
389
390debian:cmake-no-service:
391 stage: build
392 extends:
393 - .monado.image.debian:bookworm
394
395 script:
396
397 - .gitlab-ci/prebuild.sh
398 - .gitlab-ci/ci-cmake-build.sh -DXRT_FEATURE_SERVICE=OFF
399 - cd build && ctest --output-on-failure
400
401debian:cmake:32bit:
402 stage: build
403 extends:
404 - .monado.image.debian:bookworm
405
406 script:
407
408 - .gitlab-ci/prebuild.sh
409 - .gitlab-ci/ci-cmake-build.sh -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=.gitlab-ci/i386.cmake -DXRT_HAVE_OPENCV=OFF
410 - mkdir -p "debian:cmake:32bit"
411 - pahole --sizes --class_name file://build/ipc-structs.txt build/src/xrt/targets/openxr/libopenxr_monado.so > "debian:cmake:32bit/ipc-sizes.txt"
412 - cd build && ctest --output-on-failure
413 artifacts:
414 paths:
415 - debian:cmake:32bit/ipc-sizes.txt
416
417debian:bullseye:cmake:
418 stage: build
419 extends:
420 - .monado.image.debian:bullseye
421
422 script:
423
424 - .gitlab-ci/prebuild.sh
425 - .gitlab-ci/ci-cmake-build.sh
426 - cd build && ctest --output-on-failure
427
428ndk:armeabi-v7a:
429 stage: build
430 extends:
431 - .monado.image.debian:bookworm-ndk
432
433 script:
434
435 - .gitlab-ci/prebuild.sh
436 - .gitlab-ci/ci-cmake-build.sh -DANDROID_ABI=armeabi-v7a -DANDROID_PLATFORM=26 -DCMAKE_TOOLCHAIN_FILE=/opt/android-ndk/build/cmake/android.toolchain.cmake -DEigen3_DIR=/usr/share/eigen3/cmake/
437
438ndk:arm64-v8a:
439 stage: build
440 extends:
441 - .monado.image.debian:bookworm-ndk
442
443 script:
444
445 - .gitlab-ci/prebuild.sh
446 - .gitlab-ci/ci-cmake-build.sh -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=26 -DCMAKE_TOOLCHAIN_FILE=/opt/android-ndk/build/cmake/android.toolchain.cmake -DEigen3_DIR=/usr/share/eigen3/cmake/
447
448android:spotlessCheck:
449 stage: build
450 extends:
451 - .monado.image.debian:bookworm-ndk
452
453 before_script:
454 # For caching gradle stuff
455 - export GRADLE_USER_HOME=`pwd`/.gradlehome
456
457 variables:
458 GRADLE_ARGS: "-Porg.gradle.daemon=false "
459 cache:
460 paths:
461 - .gradlehome/wrapper
462 - .gradlehome/caches
463
464 script:
465
466 - .gitlab-ci/prebuild.sh
467 - .gitlab-ci/ci-gradle-build.sh spotlessCheck
468
469android:outOfProcessDebug:
470 stage: build
471 extends:
472 - .monado.image.debian:bookworm-ndk
473
474 before_script:
475 # For caching gradle stuff
476 - export GRADLE_USER_HOME=`pwd`/.gradlehome
477
478 variables:
479 GRADLE_ARGS: "-Porg.gradle.daemon=false "
480 cache:
481 paths:
482 - .gradlehome/wrapper
483 - .gradlehome/caches
484
485 script:
486
487 - .gitlab-ci/prebuild.sh
488 - .gitlab-ci/ci-gradle-build.sh assembleOutOfProcessDebug
489 artifacts:
490 paths:
491 - src/xrt/targets/openxr_android/build/outputs/apk/outOfProcess
492
493android:inProcessDebug:
494 stage: build
495 extends:
496 - .monado.image.debian:bookworm-ndk
497
498 before_script:
499 # For caching gradle stuff
500 - export GRADLE_USER_HOME=`pwd`/.gradlehome
501
502 variables:
503 GRADLE_ARGS: "-Porg.gradle.daemon=false "
504 cache:
505 paths:
506 - .gradlehome/wrapper
507 - .gradlehome/caches
508
509 script:
510
511 - .gitlab-ci/prebuild.sh
512 - .gitlab-ci/ci-gradle-build.sh assembleInProcessDebug
513 artifacts:
514 paths:
515 - src/xrt/targets/openxr_android/build/outputs/apk/inProcess
516
517android:outOfProcessRelease:
518 stage: build
519 extends:
520 - .monado.image.debian:bookworm-ndk
521 - .monado.packaging.conditions
522
523 before_script:
524 # For caching gradle stuff
525 - export GRADLE_USER_HOME=`pwd`/.gradlehome
526
527 variables:
528 GRADLE_ARGS: "-Porg.gradle.daemon=false "
529 cache:
530 paths:
531 - .gradlehome/wrapper
532 - .gradlehome/caches
533
534 script:
535
536 - .gitlab-ci/prebuild.sh
537 - base64 --decode ${MONADO_ANDROID_KEYSTORE} > monado-release.jks
538 - .gitlab-ci/ci-gradle-build.sh assembleOutOfProcessRelease
539 artifacts:
540 paths:
541 - src/xrt/targets/openxr_android/build/outputs/apk/outOfProcess
542
543android:inProcessRelease:
544 stage: build
545 extends:
546 - .monado.image.debian:bookworm-ndk
547 - .monado.packaging.conditions
548
549 before_script:
550 # For caching gradle stuff
551 - export GRADLE_USER_HOME=`pwd`/.gradlehome
552
553 variables:
554 GRADLE_ARGS: "-Porg.gradle.daemon=false "
555 cache:
556 paths:
557 - .gradlehome/wrapper
558 - .gradlehome/caches
559
560 script:
561
562 - .gitlab-ci/prebuild.sh
563 - base64 --decode ${MONADO_ANDROID_KEYSTORE} > monado-release.jks
564 - .gitlab-ci/ci-gradle-build.sh assembleInProcessRelease
565 artifacts:
566 paths:
567 - src/xrt/targets/openxr_android/build/outputs/apk/inProcess
568
569ubuntu:jammy:cmake:
570 stage: build
571 extends:
572 - .monado.image.ubuntu:jammy
573
574 script:
575
576 - .gitlab-ci/prebuild.sh
577 - .gitlab-ci/ci-cmake-build.sh
578 - cd build && ctest --output-on-failure
579
580ubuntu:noble:cmake:
581 stage: build
582 extends:
583 - .monado.image.ubuntu:noble
584
585 script:
586
587 - .gitlab-ci/prebuild.sh
588 - .gitlab-ci/ci-cmake-build.sh
589 - cd build && ctest --output-on-failure
590
591arch:cmake:
592 stage: build
593 extends:
594 - .monado.image.arch
595
596 script:
597
598 - .gitlab-ci/prebuild.sh
599 - .gitlab-ci/ci-cmake-build.sh
600 - cd build && ctest --output-on-failure
601
602arch:cmake:clang:
603 stage: build
604 extends:
605 - .monado.image.arch
606
607 script:
608
609 - .gitlab-ci/prebuild.sh
610 - .gitlab-ci/ci-cmake-build.sh -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++
611 - cd build && ctest --output-on-failure
612
613alpine:cmake:
614 stage: build
615 extends:
616 - .monado.image.alpine
617
618 script:
619
620 - .gitlab-ci/prebuild.sh
621 - .gitlab-ci/ci-cmake-build.sh
622 - cd build && ctest --output-on-failure
623
624# Windows build
625windows:
626 stage: build
627 extends:
628 - .monado.image.windows
629 script:
630 - ./.gitlab-ci/windows/monado_build.ps1 -Install -RunTests
631 artifacts:
632 when: always
633 paths:
634 - install
635 - build/Testing/Temporary
636
637
638# Check compatibility of IPC protocol between 32 and 64 bits
639ipc-32-64-compatibility:
640 stage: check
641 dependencies: ["debian:cmake-no-opencv", "debian:cmake:32bit"]
642 needs: ["debian:cmake-no-opencv", "debian:cmake:32bit"]
643 script:
644 - diff -du "debian:cmake-no-opencv/ipc-sizes.txt" "debian:cmake:32bit/ipc-sizes.txt"
645 - cmp "debian:cmake-no-opencv/ipc-sizes.txt" "debian:cmake:32bit/ipc-sizes.txt"
646
647clang-tidy:
648 extends:
649 - .build-rules
650 - .monado.image.debian:bookworm
651 stage: check
652 dependencies:
653 - debian:cmake
654 needs:
655 - debian:cmake
656 script:
657 - file $(which run-clang-tidy)
658 - run-clang-tidy -quiet -p build
659
660
661debian:bookworm:package:
662 extends:
663 - .monado.image.debian:bookworm
664 - .monado.packaging.conditions
665 variables:
666 GIT_STRATEGY: clone
667 DEBFULLNAME: "Monado CI"
668 DEBEMAIL: "rylie.pavlik@collabora.com"
669 DISTRO: debian
670 CODENAME: bookworm
671 DEB_VERSION_SUFFIX: bpo12
672 stage: package
673 before_script:
674 - git config --global user.name Monado CI
675 - git config --global user.email rylie.pavlik@collabora.com
676 script:
677 - .gitlab-ci/prebuild.sh
678 # Prep the source tree
679 - git clean -dfx
680 # Call this script to build binary and source packages.
681 # Can try locally by exporting the right variables and passing -B to get only a binary package to avoid complaints.
682 - .gitlab-ci/build-and-submit-package.sh
683 artifacts:
684 paths:
685 - "incoming/"
686 expire_in: 2 days
687
688debian:bullseye:package:
689 extends:
690 - .monado.image.debian:bullseye
691 - .monado.packaging.conditions
692 variables:
693 GIT_STRATEGY: clone
694 DEBFULLNAME: "Monado CI"
695 DEBEMAIL: "rylie.pavlik@collabora.com"
696 DISTRO: debian
697 CODENAME: bullseye
698 DEB_VERSION_SUFFIX: bpo11
699 stage: package
700 before_script:
701 - git config --global user.name Monado CI
702 - git config --global user.email rylie.pavlik@collabora.com
703 script:
704 - .gitlab-ci/prebuild.sh
705 # Prep the source tree
706 - git clean -dfx
707 # Call this script to build binary and source packages.
708 # Can try locally by exporting the right variables and passing -B to get only a binary package to avoid complaints.
709 - .gitlab-ci/build-and-submit-package.sh
710 artifacts:
711 paths:
712 - "incoming/"
713 expire_in: 2 days
714
715ubuntu:jammy:package:
716 extends:
717 - .monado.image.ubuntu:jammy
718 - .monado.packaging.conditions
719 variables:
720 GIT_STRATEGY: clone
721 DEBFULLNAME: "Monado CI"
722 DEBEMAIL: "rylie.pavlik@collabora.com"
723 DISTRO: ubuntu
724 CODENAME: jammy
725 DEB_VERSION_SUFFIX: ubuntu2204
726 stage: package
727 before_script:
728 - git config --global user.name Monado CI
729 - git config --global user.email rylie.pavlik@collabora.com
730 script:
731 - .gitlab-ci/prebuild.sh
732 # Prep the source tree
733 - git clean -dfx
734 # Call this script to build binary and source packages.
735 # Can try locally by exporting the right variables and passing -B to get only a binary package to avoid complaints.
736 - .gitlab-ci/build-and-submit-package.sh
737 artifacts:
738 paths:
739 - "incoming/"
740 expire_in: 2 days
741
742ubuntu:noble:package:
743 extends:
744 - .monado.image.ubuntu:noble
745 - .monado.packaging.conditions
746 variables:
747 GIT_STRATEGY: clone
748 DEBFULLNAME: "Monado CI"
749 DEBEMAIL: "rylie.pavlik@collabora.com"
750 DISTRO: ubuntu
751 CODENAME: noble
752 DEB_VERSION_SUFFIX: ubuntu2404
753 stage: package
754 before_script:
755 - git config --global user.name Monado CI
756 - git config --global user.email rylie.pavlik@collabora.com
757 script:
758 - .gitlab-ci/prebuild.sh
759 # Prep the source tree
760 - git clean -dfx
761 # Call this script to build binary and source packages.
762 # Can try locally by exporting the right variables and passing -B to get only a binary package to avoid complaints.
763 - .gitlab-ci/build-and-submit-package.sh
764 artifacts:
765 paths:
766 - "incoming/"
767 expire_in: 2 days
768
769reprepro:package:
770 stage: reprepro
771 extends:
772 - .monado.image.debian:bookworm
773
774 - .monado.packaging.conditions
775 needs:
776 - debian:bookworm:package
777 - debian:bullseye:package
778 - ubuntu:jammy:package
779 - ubuntu:noble:package
780 script:
781 - bash .gitlab-ci/reprepro.sh
782 artifacts:
783 paths:
784 - "repo/"
785 expire_in: 2 days
786
787###
788# Pages
789###
790pages:
791 stage: pages
792 extends:
793 - .monado.packaging.conditions
794 needs:
795 - debian:cmake
796 - reprepro:package
797 script:
798 - mkdir -p public
799 - mv build/doc/html/* public/
800 - mv repo public/apt
801 artifacts:
802 paths:
803 - public