# SPDX-License-Identifier: CC0-1.0 # SPDX-FileCopyrightText: 2018-2024 Collabora, Ltd. and the Monado contributors ############################################### # GENERATED - DO NOT EDIT # see .gitlab-ci/ci.template, etc instead ############################################### # workflow: # rules: # - if: $CI_PIPELINE_SOURCE == 'merge_request_event' # - if: $CI_PIPELINE_SOURCE == 'push' variables: FDO_UPSTREAM_REPO: "monado/monado" include: - project: "freedesktop/ci-templates" ref: 185ede0e9b9b1924b92306ab8b882a6294e92613 file: - "/templates/debian.yml" - "/templates/ubuntu.yml" - "/templates/arch.yml" - "/templates/alpine.yml" # - local: .gitlab-ci/containers/ci-container-prep.yml # This include is for compatibility with the fdo CI restrictions/checks # needed due to https://gitlab.freedesktop.org/freedesktop/freedesktop/-/issues/438 - local: .gitlab-ci/ci-rules.yml stages: - container_prep - build - package - reprepro - pages - deploy ### # Extra rules for packaging .monado.packaging.conditions: rules: # Only the default branch of the "upstream" repo on push. - if: $CI_PROJECT_PATH == $FDO_UPSTREAM_REPO && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "push" ### ### # Windows container-related jobs (prep and usage) .monado.common_variables.windows:vs2022: inherit: default: false variables: MONADO_WIN_BASE_TAG: "20240607.0" MONADO_WIN_MAIN_TAG: "20240607.0" MONADO_BASE_IMAGE_PATH: "win2022/vs2022_base" MONADO_MAIN_IMAGE_PATH: "win2022/vs2022" .monado.variables.windows:vs2022: inherit: default: false extends: - .monado.common_variables.windows:vs2022 variables: MONADO_IMAGE_PATH: "$MONADO_MAIN_IMAGE_PATH" FDO_DISTRIBUTION_TAG: "$MONADO_WIN_MAIN_TAG" MONADO_IMAGE: "$CI_REGISTRY_IMAGE/$MONADO_IMAGE_PATH:$FDO_DISTRIBUTION_TAG" MONADO_UPSTREAM_IMAGE: "$CI_REGISTRY/$FDO_UPSTREAM_REPO/$MONADO_IMAGE_PATH:$FDO_DISTRIBUTION_TAG" # Shared container-building job .monado.windows.container_prep: inherit: default: false tags: - windows - "2022" - shell variables: GIT_STRATEGY: fetch extends: - .container-rules stage: container_prep script: - | .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 # This container just installs Visual C++ Build Tools. win:container_prep:base: extends: - .monado.windows.container_prep - .monado.common_variables.windows:vs2022 variables: DOCKERFILE: Dockerfile.vs2022 MONADO_IMAGE_PATH: ${MONADO_BASE_IMAGE_PATH} FDO_DISTRIBUTION_TAG: "$MONADO_WIN_BASE_TAG" MONADO_IMAGE: "$CI_REGISTRY_IMAGE/$MONADO_IMAGE_PATH:$FDO_DISTRIBUTION_TAG" MONADO_UPSTREAM_IMAGE: "$CI_REGISTRY/$FDO_UPSTREAM_REPO/$MONADO_IMAGE_PATH:$FDO_DISTRIBUTION_TAG" # This container adds other deps win:container_prep: extends: - .monado.windows.container_prep - .monado.variables.windows:vs2022 needs: - win:container_prep:base variables: DOCKERFILE: Dockerfile.build MONADO_BASE_IMAGE: "$CI_REGISTRY_IMAGE/$MONADO_BASE_IMAGE_PATH:$MONADO_WIN_BASE_TAG" MONADO_UPSTREAM_BASE_IMAGE: "$CI_REGISTRY/$FDO_UPSTREAM_REPO/$MONADO_BASE_IMAGE_PATH:$MONADO_WIN_BASE_TAG" # Base job to use a Windows build container .monado.image.windows: tags: - windows - "2022" - docker extends: - .monado.variables.windows:vs2022 - .build-rules image: $MONADO_IMAGE # Variables for build and usage of Debian bookworm image .monado.variables.debian:bookworm: variables: FDO_DISTRIBUTION_VERSION: "bookworm" FDO_DISTRIBUTION_TAG: "2024-08-16" # Variables for build and usage of Debian bullseye image .monado.variables.debian:bullseye: variables: FDO_DISTRIBUTION_VERSION: "bullseye" FDO_DISTRIBUTION_TAG: "2024-07-18" # Variables for build and usage of Debian bookworm-ndk image .monado.variables.debian:bookworm-ndk: variables: FDO_DISTRIBUTION_VERSION: "bookworm" FDO_DISTRIBUTION_TAG: "2024-07-18" FDO_REPO_SUFFIX: ndk # Variables for build and usage of Ubuntu jammy image .monado.variables.ubuntu:jammy: variables: FDO_DISTRIBUTION_VERSION: "22.04" FDO_DISTRIBUTION_TAG: "2024-07-18" # Variables for build and usage of Ubuntu noble image .monado.variables.ubuntu:noble: variables: FDO_DISTRIBUTION_VERSION: "24.04" FDO_DISTRIBUTION_TAG: "2024-07-18" # Variables for build and usage of Arch image .monado.variables.arch: variables: FDO_DISTRIBUTION_TAG: "2024-01-16" # Variables for build and usage of Alpine image .monado.variables.alpine: variables: FDO_DISTRIBUTION_TAG: "2024-01-16" ### # Container prep jobs # Make Debian bookworm image debian:bookworm:container_prep: stage: container_prep extends: - .container-rules - .monado.variables.debian:bookworm - .fdo.container-build@debian # from ci-templates variables: FDO_DISTRIBUTION_PACKAGES: 'build-essential ca-certificates clang-format 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 pandoc patch pipx pkg-config python3 python3-click python3-pip reprepro unzip wayland-protocols wget' FDO_DISTRIBUTION_EXEC: 'env FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash .gitlab-ci/i386_and_proclamation_container_prep.sh' # Make Debian bullseye image debian:bullseye:container_prep: stage: container_prep extends: - .container-rules - .monado.variables.debian:bullseye - .fdo.container-build@debian # from ci-templates variables: 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' FDO_DISTRIBUTION_EXEC: 'env FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash .gitlab-ci/bullseye_backports.sh' # Make Debian bookworm-ndk image debian:bookworm-ndk:container_prep: stage: container_prep extends: - .container-rules - .monado.variables.debian:bookworm-ndk - .fdo.container-build@debian # from ci-templates variables: FDO_DISTRIBUTION_PACKAGES: 'ca-certificates cmake default-jdk-headless git glslang-tools libeigen3-dev meson ninja-build pkg-config python3 unzip wget' FDO_DISTRIBUTION_EXEC: 'env FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash .gitlab-ci/android_container_prep.sh' # Make Ubuntu jammy image ubuntu:jammy:container_prep: stage: container_prep extends: - .container-rules - .monado.variables.ubuntu:jammy - .fdo.container-build@ubuntu # from ci-templates variables: 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' # Make Ubuntu noble image ubuntu:noble:container_prep: stage: container_prep extends: - .container-rules - .monado.variables.ubuntu:noble - .fdo.container-build@ubuntu # from ci-templates variables: 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' # Make Arch image arch:container_prep: stage: container_prep extends: - .container-rules - .monado.variables.arch - .fdo.container-build@arch # from ci-templates variables: 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' FDO_DISTRIBUTION_EXEC: 'env FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash .gitlab-ci/install-arch-additional-deps.sh' # Make Alpine image alpine:container_prep: stage: container_prep extends: - .container-rules - .monado.variables.alpine - .fdo.container-build@alpine # from ci-templates variables: 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' ### # Container usage base jobs # Base for using Debian bookworm image .monado.image.debian:bookworm: extends: - .monado.variables.debian:bookworm - .fdo.distribution-image@debian # from ci-templates - .build-rules # Base for using Debian bullseye image .monado.image.debian:bullseye: extends: - .monado.variables.debian:bullseye - .fdo.distribution-image@debian # from ci-templates - .build-rules # Base for using Debian bookworm-ndk image .monado.image.debian:bookworm-ndk: extends: - .monado.variables.debian:bookworm-ndk - .fdo.suffixed-image@debian # from ci-templates - .build-rules # Base for using Ubuntu jammy image .monado.image.ubuntu:jammy: extends: - .monado.variables.ubuntu:jammy - .fdo.distribution-image@ubuntu # from ci-templates - .build-rules # Base for using Ubuntu noble image .monado.image.ubuntu:noble: extends: - .monado.variables.ubuntu:noble - .fdo.distribution-image@ubuntu # from ci-templates - .build-rules # Base for using Arch image .monado.image.arch: extends: - .monado.variables.arch - .fdo.distribution-image@arch # from ci-templates - .build-rules # Base for using Alpine image .monado.image.alpine: extends: - .monado.variables.alpine - .fdo.distribution-image@alpine # from ci-templates - .build-rules # Style check job format-and-spellcheck: extends: - .monado.image.debian:bookworm stage: build script: - scripts/format-and-spellcheck.sh artifacts: paths: - patches/ expire_in: 1 week when: on_failure # Verify REUSE compliance reuse: extends: - .build-rules stage: build image: name: fsfe/reuse:latest entrypoint: [""] script: - reuse lint debian:cmake: stage: build extends: - .monado.packaging.conditions - .monado.image.debian:bookworm before_script: - pushd doc/changes - proclamation build vNEXT - popd script: - .gitlab-ci/prebuild.sh - .gitlab-ci/ci-cmake-build.sh -DBUILD_DOC=ON - cd build && ctest --output-on-failure artifacts: paths: - build/doc/html/ debian:cmake-no-opencv: stage: build extends: - .monado.image.debian:bookworm script: - .gitlab-ci/prebuild.sh - .gitlab-ci/ci-cmake-build.sh -DXRT_HAVE_OPENCV=OFF - cd build && ctest --output-on-failure debian:cmake-no-sdl2: stage: build extends: - .monado.image.debian:bookworm script: - .gitlab-ci/prebuild.sh - .gitlab-ci/ci-cmake-build.sh -DXRT_HAVE_SDL2=OFF - cd build && ctest --output-on-failure debian:cmake-no-service: stage: build extends: - .monado.image.debian:bookworm script: - .gitlab-ci/prebuild.sh - .gitlab-ci/ci-cmake-build.sh -DXRT_FEATURE_SERVICE=OFF - cd build && ctest --output-on-failure debian:cmake:32bit: stage: build extends: - .monado.image.debian:bookworm script: - .gitlab-ci/prebuild.sh - .gitlab-ci/ci-cmake-build.sh -DCMAKE_TOOLCHAIN_FILE=.gitlab-ci/i386.cmake -DXRT_HAVE_OPENCV=OFF - cd build && ctest --output-on-failure debian:bullseye:cmake: stage: build extends: - .monado.image.debian:bullseye script: - .gitlab-ci/prebuild.sh - .gitlab-ci/ci-cmake-build.sh - cd build && ctest --output-on-failure ndk:armeabi-v7a: stage: build extends: - .monado.image.debian:bookworm-ndk script: - .gitlab-ci/prebuild.sh - .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/lib/cmake/eigen3/ -DEIGEN3_INCLUDE_DIR=/usr/include/eigen3 ndk:arm64-v8a: stage: build extends: - .monado.image.debian:bookworm-ndk script: - .gitlab-ci/prebuild.sh - .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/lib/cmake/eigen3/ -DEIGEN3_INCLUDE_DIR=/usr/include/eigen3 android:spotlessCheck: stage: build extends: - .monado.image.debian:bookworm-ndk before_script: # For caching gradle stuff - export GRADLE_USER_HOME=`pwd`/.gradlehome variables: GRADLE_ARGS: "-Porg.gradle.daemon=false " cache: paths: - .gradlehome/wrapper - .gradlehome/caches script: - .gitlab-ci/prebuild.sh - .gitlab-ci/ci-gradle-build.sh spotlessCheck android:outOfProcessDebug: stage: build extends: - .monado.image.debian:bookworm-ndk before_script: # For caching gradle stuff - export GRADLE_USER_HOME=`pwd`/.gradlehome variables: GRADLE_ARGS: "-Porg.gradle.daemon=false " cache: paths: - .gradlehome/wrapper - .gradlehome/caches script: - .gitlab-ci/prebuild.sh - .gitlab-ci/ci-gradle-build.sh assembleOutOfProcessDebug artifacts: paths: - src/xrt/targets/openxr_android/build/outputs/apk/outOfProcess android:inProcessDebug: stage: build extends: - .monado.image.debian:bookworm-ndk before_script: # For caching gradle stuff - export GRADLE_USER_HOME=`pwd`/.gradlehome variables: GRADLE_ARGS: "-Porg.gradle.daemon=false " cache: paths: - .gradlehome/wrapper - .gradlehome/caches script: - .gitlab-ci/prebuild.sh - .gitlab-ci/ci-gradle-build.sh assembleInProcessDebug artifacts: paths: - src/xrt/targets/openxr_android/build/outputs/apk/inProcess android:outOfProcessRelease: stage: build extends: - .monado.image.debian:bookworm-ndk - .monado.packaging.conditions before_script: # For caching gradle stuff - export GRADLE_USER_HOME=`pwd`/.gradlehome variables: GRADLE_ARGS: "-Porg.gradle.daemon=false " cache: paths: - .gradlehome/wrapper - .gradlehome/caches script: - .gitlab-ci/prebuild.sh - base64 --decode ${MONADO_ANDROID_KEYSTORE} > monado-release.jks - .gitlab-ci/ci-gradle-build.sh assembleOutOfProcessRelease artifacts: paths: - src/xrt/targets/openxr_android/build/outputs/apk/outOfProcess android:inProcessRelease: stage: build extends: - .monado.image.debian:bookworm-ndk - .monado.packaging.conditions before_script: # For caching gradle stuff - export GRADLE_USER_HOME=`pwd`/.gradlehome variables: GRADLE_ARGS: "-Porg.gradle.daemon=false " cache: paths: - .gradlehome/wrapper - .gradlehome/caches script: - .gitlab-ci/prebuild.sh - base64 --decode ${MONADO_ANDROID_KEYSTORE} > monado-release.jks - .gitlab-ci/ci-gradle-build.sh assembleInProcessRelease artifacts: paths: - src/xrt/targets/openxr_android/build/outputs/apk/inProcess ubuntu:jammy:cmake: stage: build extends: - .monado.image.ubuntu:jammy script: - .gitlab-ci/prebuild.sh - .gitlab-ci/ci-cmake-build.sh - cd build && ctest --output-on-failure ubuntu:noble:cmake: stage: build extends: - .monado.image.ubuntu:noble script: - .gitlab-ci/prebuild.sh - .gitlab-ci/ci-cmake-build.sh - cd build && ctest --output-on-failure arch:cmake: stage: build extends: - .monado.image.arch script: - .gitlab-ci/prebuild.sh - .gitlab-ci/ci-cmake-build.sh - cd build && ctest --output-on-failure arch:cmake:clang: stage: build extends: - .monado.image.arch script: - .gitlab-ci/prebuild.sh - .gitlab-ci/ci-cmake-build.sh -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ - cd build && ctest --output-on-failure alpine:cmake: stage: build extends: - .monado.image.alpine script: - .gitlab-ci/prebuild.sh - .gitlab-ci/ci-cmake-build.sh - cd build && ctest --output-on-failure # Windows build windows: stage: build extends: - .monado.image.windows script: - ./.gitlab-ci/windows/monado_build.ps1 -Install -RunTests artifacts: when: always paths: - install - build/Testing/Temporary debian:bookworm:package: extends: - .monado.image.debian:bookworm - .monado.packaging.conditions variables: GIT_STRATEGY: clone DEBFULLNAME: "Monado CI" DEBEMAIL: "rylie.pavlik@collabora.com" DISTRO: debian CODENAME: bookworm DEB_VERSION_SUFFIX: bpo12 stage: package before_script: - git config --global user.name Monado CI - git config --global user.email rylie.pavlik@collabora.com script: - .gitlab-ci/prebuild.sh # Prep the source tree - git clean -dfx # Call this script to build binary and source packages. # Can try locally by exporting the right variables and passing -B to get only a binary package to avoid complaints. - .gitlab-ci/build-and-submit-package.sh artifacts: paths: - "incoming/" expire_in: 2 days debian:bullseye:package: extends: - .monado.image.debian:bullseye - .monado.packaging.conditions variables: GIT_STRATEGY: clone DEBFULLNAME: "Monado CI" DEBEMAIL: "rylie.pavlik@collabora.com" DISTRO: debian CODENAME: bullseye DEB_VERSION_SUFFIX: bpo11 stage: package before_script: - git config --global user.name Monado CI - git config --global user.email rylie.pavlik@collabora.com script: - .gitlab-ci/prebuild.sh # Prep the source tree - git clean -dfx # Call this script to build binary and source packages. # Can try locally by exporting the right variables and passing -B to get only a binary package to avoid complaints. - .gitlab-ci/build-and-submit-package.sh artifacts: paths: - "incoming/" expire_in: 2 days ubuntu:jammy:package: extends: - .monado.image.ubuntu:jammy - .monado.packaging.conditions variables: GIT_STRATEGY: clone DEBFULLNAME: "Monado CI" DEBEMAIL: "rylie.pavlik@collabora.com" DISTRO: ubuntu CODENAME: jammy DEB_VERSION_SUFFIX: ubuntu2204 stage: package before_script: - git config --global user.name Monado CI - git config --global user.email rylie.pavlik@collabora.com script: - .gitlab-ci/prebuild.sh # Prep the source tree - git clean -dfx # Call this script to build binary and source packages. # Can try locally by exporting the right variables and passing -B to get only a binary package to avoid complaints. - .gitlab-ci/build-and-submit-package.sh artifacts: paths: - "incoming/" expire_in: 2 days ubuntu:noble:package: extends: - .monado.image.ubuntu:noble - .monado.packaging.conditions variables: GIT_STRATEGY: clone DEBFULLNAME: "Monado CI" DEBEMAIL: "rylie.pavlik@collabora.com" DISTRO: ubuntu CODENAME: noble DEB_VERSION_SUFFIX: ubuntu2404 stage: package before_script: - git config --global user.name Monado CI - git config --global user.email rylie.pavlik@collabora.com script: - .gitlab-ci/prebuild.sh # Prep the source tree - git clean -dfx # Call this script to build binary and source packages. # Can try locally by exporting the right variables and passing -B to get only a binary package to avoid complaints. - .gitlab-ci/build-and-submit-package.sh artifacts: paths: - "incoming/" expire_in: 2 days reprepro:package: stage: reprepro extends: - .monado.image.debian:bookworm - .monado.packaging.conditions needs: - debian:bookworm:package - debian:bullseye:package - ubuntu:jammy:package - ubuntu:noble:package script: - bash .gitlab-ci/reprepro.sh artifacts: paths: - "repo/" expire_in: 2 days ### # Pages ### pages: stage: pages extends: - .monado.packaging.conditions needs: - debian:cmake - reprepro:package script: - mkdir -p public - mv build/doc/html/* public/ - mv repo public/apt artifacts: paths: - public