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: "20250418.0"
60 MONADO_WIN_MAIN_TAG: "20250418.0"
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 - src/xrt/ipc/shared/proto.py src/xrt/ipc/shared/proto.json structs.txt
373 - mkdir -p "debian:cmake-no-opencv"
374 - pahole --sizes --class_name file://structs.txt build/src/xrt/targets/openxr/libopenxr_monado.so > "debian:cmake-no-opencv/ipc-sizes.txt"
375 - cd build && ctest --output-on-failure
376 artifacts:
377 paths:
378 - debian:cmake-no-opencv/ipc-sizes.txt
379
380debian:cmake-no-sdl2:
381 stage: build
382 extends:
383 - .monado.image.debian:bookworm
384
385 script:
386
387 - .gitlab-ci/prebuild.sh
388 - .gitlab-ci/ci-cmake-build.sh -DXRT_HAVE_SDL2=OFF
389 - cd build && ctest --output-on-failure
390
391debian:cmake-no-service:
392 stage: build
393 extends:
394 - .monado.image.debian:bookworm
395
396 script:
397
398 - .gitlab-ci/prebuild.sh
399 - .gitlab-ci/ci-cmake-build.sh -DXRT_FEATURE_SERVICE=OFF
400 - cd build && ctest --output-on-failure
401
402debian:cmake:32bit:
403 stage: build
404 extends:
405 - .monado.image.debian:bookworm
406
407 script:
408
409 - .gitlab-ci/prebuild.sh
410 - .gitlab-ci/ci-cmake-build.sh -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=.gitlab-ci/i386.cmake -DXRT_HAVE_OPENCV=OFF
411 - src/xrt/ipc/shared/proto.py src/xrt/ipc/shared/proto.json structs.txt
412 - mkdir -p "debian:cmake:32bit"
413 - pahole --sizes --class_name file://structs.txt build/src/xrt/targets/openxr/libopenxr_monado.so > "debian:cmake:32bit/ipc-sizes.txt"
414 - cd build && ctest --output-on-failure
415 artifacts:
416 paths:
417 - debian:cmake:32bit/ipc-sizes.txt
418
419debian:bullseye:cmake:
420 stage: build
421 extends:
422 - .monado.image.debian:bullseye
423
424 script:
425
426 - .gitlab-ci/prebuild.sh
427 - .gitlab-ci/ci-cmake-build.sh
428 - cd build && ctest --output-on-failure
429
430ndk:armeabi-v7a:
431 stage: build
432 extends:
433 - .monado.image.debian:bookworm-ndk
434
435 script:
436
437 - .gitlab-ci/prebuild.sh
438 - .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/
439
440ndk:arm64-v8a:
441 stage: build
442 extends:
443 - .monado.image.debian:bookworm-ndk
444
445 script:
446
447 - .gitlab-ci/prebuild.sh
448 - .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/
449
450android:spotlessCheck:
451 stage: build
452 extends:
453 - .monado.image.debian:bookworm-ndk
454
455 before_script:
456 # For caching gradle stuff
457 - export GRADLE_USER_HOME=`pwd`/.gradlehome
458
459 variables:
460 GRADLE_ARGS: "-Porg.gradle.daemon=false "
461 cache:
462 paths:
463 - .gradlehome/wrapper
464 - .gradlehome/caches
465
466 script:
467
468 - .gitlab-ci/prebuild.sh
469 - .gitlab-ci/ci-gradle-build.sh spotlessCheck
470
471android:outOfProcessDebug:
472 stage: build
473 extends:
474 - .monado.image.debian:bookworm-ndk
475
476 before_script:
477 # For caching gradle stuff
478 - export GRADLE_USER_HOME=`pwd`/.gradlehome
479
480 variables:
481 GRADLE_ARGS: "-Porg.gradle.daemon=false "
482 cache:
483 paths:
484 - .gradlehome/wrapper
485 - .gradlehome/caches
486
487 script:
488
489 - .gitlab-ci/prebuild.sh
490 - .gitlab-ci/ci-gradle-build.sh assembleOutOfProcessDebug
491 artifacts:
492 paths:
493 - src/xrt/targets/openxr_android/build/outputs/apk/outOfProcess
494
495android:inProcessDebug:
496 stage: build
497 extends:
498 - .monado.image.debian:bookworm-ndk
499
500 before_script:
501 # For caching gradle stuff
502 - export GRADLE_USER_HOME=`pwd`/.gradlehome
503
504 variables:
505 GRADLE_ARGS: "-Porg.gradle.daemon=false "
506 cache:
507 paths:
508 - .gradlehome/wrapper
509 - .gradlehome/caches
510
511 script:
512
513 - .gitlab-ci/prebuild.sh
514 - .gitlab-ci/ci-gradle-build.sh assembleInProcessDebug
515 artifacts:
516 paths:
517 - src/xrt/targets/openxr_android/build/outputs/apk/inProcess
518
519android:outOfProcessRelease:
520 stage: build
521 extends:
522 - .monado.image.debian:bookworm-ndk
523 - .monado.packaging.conditions
524
525 before_script:
526 # For caching gradle stuff
527 - export GRADLE_USER_HOME=`pwd`/.gradlehome
528
529 variables:
530 GRADLE_ARGS: "-Porg.gradle.daemon=false "
531 cache:
532 paths:
533 - .gradlehome/wrapper
534 - .gradlehome/caches
535
536 script:
537
538 - .gitlab-ci/prebuild.sh
539 - base64 --decode ${MONADO_ANDROID_KEYSTORE} > monado-release.jks
540 - .gitlab-ci/ci-gradle-build.sh assembleOutOfProcessRelease
541 artifacts:
542 paths:
543 - src/xrt/targets/openxr_android/build/outputs/apk/outOfProcess
544
545android:inProcessRelease:
546 stage: build
547 extends:
548 - .monado.image.debian:bookworm-ndk
549 - .monado.packaging.conditions
550
551 before_script:
552 # For caching gradle stuff
553 - export GRADLE_USER_HOME=`pwd`/.gradlehome
554
555 variables:
556 GRADLE_ARGS: "-Porg.gradle.daemon=false "
557 cache:
558 paths:
559 - .gradlehome/wrapper
560 - .gradlehome/caches
561
562 script:
563
564 - .gitlab-ci/prebuild.sh
565 - base64 --decode ${MONADO_ANDROID_KEYSTORE} > monado-release.jks
566 - .gitlab-ci/ci-gradle-build.sh assembleInProcessRelease
567 artifacts:
568 paths:
569 - src/xrt/targets/openxr_android/build/outputs/apk/inProcess
570
571ubuntu:jammy:cmake:
572 stage: build
573 extends:
574 - .monado.image.ubuntu:jammy
575
576 script:
577
578 - .gitlab-ci/prebuild.sh
579 - .gitlab-ci/ci-cmake-build.sh
580 - cd build && ctest --output-on-failure
581
582ubuntu:noble:cmake:
583 stage: build
584 extends:
585 - .monado.image.ubuntu:noble
586
587 script:
588
589 - .gitlab-ci/prebuild.sh
590 - .gitlab-ci/ci-cmake-build.sh
591 - cd build && ctest --output-on-failure
592
593arch:cmake:
594 stage: build
595 extends:
596 - .monado.image.arch
597
598 script:
599
600 - .gitlab-ci/prebuild.sh
601 - .gitlab-ci/ci-cmake-build.sh
602 - cd build && ctest --output-on-failure
603
604arch:cmake:clang:
605 stage: build
606 extends:
607 - .monado.image.arch
608
609 script:
610
611 - .gitlab-ci/prebuild.sh
612 - .gitlab-ci/ci-cmake-build.sh -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++
613 - cd build && ctest --output-on-failure
614
615alpine:cmake:
616 stage: build
617 extends:
618 - .monado.image.alpine
619
620 script:
621
622 - .gitlab-ci/prebuild.sh
623 - .gitlab-ci/ci-cmake-build.sh
624 - cd build && ctest --output-on-failure
625
626# Windows build
627windows:
628 stage: build
629 extends:
630 - .monado.image.windows
631 script:
632 - ./.gitlab-ci/windows/monado_build.ps1 -Install -RunTests
633 artifacts:
634 when: always
635 paths:
636 - install
637 - build/Testing/Temporary
638
639
640# Check compatibility of IPC protocol between 32 and 64 bits
641ipc-32-64-compatibility:
642 stage: check
643 dependencies: ["debian:cmake-no-opencv", "debian:cmake:32bit"]
644 needs: ["debian:cmake-no-opencv", "debian:cmake:32bit"]
645 script:
646 - diff -du "debian:cmake-no-opencv/ipc-sizes.txt" "debian:cmake:32bit/ipc-sizes.txt"
647 - cmp "debian:cmake-no-opencv/ipc-sizes.txt" "debian:cmake:32bit/ipc-sizes.txt"
648
649clang-tidy:
650 extends:
651 - .build-rules
652 - .monado.image.debian:bookworm
653 stage: check
654 dependencies:
655 - debian:cmake
656 needs:
657 - debian:cmake
658 script:
659 - file $(which run-clang-tidy)
660 - run-clang-tidy -quiet -p build
661
662
663debian:bookworm:package:
664 extends:
665 - .monado.image.debian:bookworm
666 - .monado.packaging.conditions
667 variables:
668 GIT_STRATEGY: clone
669 DEBFULLNAME: "Monado CI"
670 DEBEMAIL: "rylie.pavlik@collabora.com"
671 DISTRO: debian
672 CODENAME: bookworm
673 DEB_VERSION_SUFFIX: bpo12
674 stage: package
675 before_script:
676 - git config --global user.name Monado CI
677 - git config --global user.email rylie.pavlik@collabora.com
678 script:
679 - .gitlab-ci/prebuild.sh
680 # Prep the source tree
681 - git clean -dfx
682 # Call this script to build binary and source packages.
683 # Can try locally by exporting the right variables and passing -B to get only a binary package to avoid complaints.
684 - .gitlab-ci/build-and-submit-package.sh
685 artifacts:
686 paths:
687 - "incoming/"
688 expire_in: 2 days
689
690debian:bullseye:package:
691 extends:
692 - .monado.image.debian:bullseye
693 - .monado.packaging.conditions
694 variables:
695 GIT_STRATEGY: clone
696 DEBFULLNAME: "Monado CI"
697 DEBEMAIL: "rylie.pavlik@collabora.com"
698 DISTRO: debian
699 CODENAME: bullseye
700 DEB_VERSION_SUFFIX: bpo11
701 stage: package
702 before_script:
703 - git config --global user.name Monado CI
704 - git config --global user.email rylie.pavlik@collabora.com
705 script:
706 - .gitlab-ci/prebuild.sh
707 # Prep the source tree
708 - git clean -dfx
709 # Call this script to build binary and source packages.
710 # Can try locally by exporting the right variables and passing -B to get only a binary package to avoid complaints.
711 - .gitlab-ci/build-and-submit-package.sh
712 artifacts:
713 paths:
714 - "incoming/"
715 expire_in: 2 days
716
717ubuntu:jammy:package:
718 extends:
719 - .monado.image.ubuntu:jammy
720 - .monado.packaging.conditions
721 variables:
722 GIT_STRATEGY: clone
723 DEBFULLNAME: "Monado CI"
724 DEBEMAIL: "rylie.pavlik@collabora.com"
725 DISTRO: ubuntu
726 CODENAME: jammy
727 DEB_VERSION_SUFFIX: ubuntu2204
728 stage: package
729 before_script:
730 - git config --global user.name Monado CI
731 - git config --global user.email rylie.pavlik@collabora.com
732 script:
733 - .gitlab-ci/prebuild.sh
734 # Prep the source tree
735 - git clean -dfx
736 # Call this script to build binary and source packages.
737 # Can try locally by exporting the right variables and passing -B to get only a binary package to avoid complaints.
738 - .gitlab-ci/build-and-submit-package.sh
739 artifacts:
740 paths:
741 - "incoming/"
742 expire_in: 2 days
743
744ubuntu:noble:package:
745 extends:
746 - .monado.image.ubuntu:noble
747 - .monado.packaging.conditions
748 variables:
749 GIT_STRATEGY: clone
750 DEBFULLNAME: "Monado CI"
751 DEBEMAIL: "rylie.pavlik@collabora.com"
752 DISTRO: ubuntu
753 CODENAME: noble
754 DEB_VERSION_SUFFIX: ubuntu2404
755 stage: package
756 before_script:
757 - git config --global user.name Monado CI
758 - git config --global user.email rylie.pavlik@collabora.com
759 script:
760 - .gitlab-ci/prebuild.sh
761 # Prep the source tree
762 - git clean -dfx
763 # Call this script to build binary and source packages.
764 # Can try locally by exporting the right variables and passing -B to get only a binary package to avoid complaints.
765 - .gitlab-ci/build-and-submit-package.sh
766 artifacts:
767 paths:
768 - "incoming/"
769 expire_in: 2 days
770
771reprepro:package:
772 stage: reprepro
773 extends:
774 - .monado.image.debian:bookworm
775
776 - .monado.packaging.conditions
777 needs:
778 - debian:bookworm:package
779 - debian:bullseye:package
780 - ubuntu:jammy:package
781 - ubuntu:noble:package
782 script:
783 - bash .gitlab-ci/reprepro.sh
784 artifacts:
785 paths:
786 - "repo/"
787 expire_in: 2 days
788
789###
790# Pages
791###
792pages:
793 stage: pages
794 extends:
795 - .monado.packaging.conditions
796 needs:
797 - debian:cmake
798 - reprepro:package
799 script:
800 - mkdir -p public
801 - mv build/doc/html/* public/
802 - mv repo public/apt
803 artifacts:
804 paths:
805 - public