Files
splash/.gitlab-ci.yml
2026-04-29 11:09:10 -04:00

680 lines
22 KiB
YAML

variables:
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: "" # Instructs Docker not to start over TLS, needed for DinD
GIT_STRATEGY: clone
GIT_SUBMODULE_STRATEGY: recursive
TRACY_NO_INVARIANT_CHECK: 1
stages:
- deps
- test
- analysis
- staging
- package
- deploy
cache:
paths:
- ccache/
#
# ┏━╸╻ ╻╺┳╸┏━╸┏┓╻┏━┓╻┏━┓┏┓╻┏━┓
# ┣╸ ┏╋┛ ┃ ┣╸ ┃┗┫┗━┓┃┃ ┃┃┗┫┗━┓
# ┗━╸╹ ╹ ╹ ┗━╸╹ ╹┗━┛╹┗━┛╹ ╹┗━┛
#
.amd64:
variables:
ARCH: amd64
tags:
- amd64
- privileged
.arm64:
variables:
ARCH: arm64
tags:
- arm64
- privileged
.debian-13:
variables:
OS_NAME: debian-13
.ubuntu-24.04:
variables:
OS_NAME: ubuntu-24.04
.ubuntu-26.04:
variables:
OS_NAME: ubuntu-26.04
.debian-deps:
before_script:
# CCache stuff
- mkdir -p ccache
- export CCACHE_BASEDIR=${PWD}
- export CCACHE_DIR=${PWD}/ccache
- export PATH="/usr/lib/ccache:${PATH}"
- export CC=clang CXX=clang++
.ubuntu-deps:
before_script:
# CCache stuff
- mkdir -p ccache
- export CCACHE_BASEDIR=${PWD}
- export CCACHE_DIR=${PWD}/ccache
- export PATH="/usr/lib/ccache:${PATH}"
#
# ╺┳┓┏━╸┏━┓┏━╸┏┓╻╺┳┓┏━╸┏┓╻┏━╸╻┏━╸┏━┓
# ┃┃┣╸ ┣━┛┣╸ ┃┗┫ ┃┃┣╸ ┃┗┫┃ ┃┣╸ ┗━┓
# ╺┻┛┗━╸╹ ┗━╸╹ ╹╺┻┛┗━╸╹ ╹┗━╸╹┗━╸┗━┛
#
.deps:container:
stage: deps
image: docker:24.0.5
services:
- docker:24.0.5-dind
timeout: 12h
variables:
IMAGE_NAME: ${CI_REGISTRY_IMAGE}:${OS_NAME}-${ARCH}
before_script:
- docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} $CI_REGISTRY
script:
- docker buildx build -f tools/docker/dockerfile-${OS_NAME} -t ${IMAGE_NAME} --push .
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
changes:
- tools/docker/**/*
deps:container:ubuntu-24.04:amd64:
extends:
- .amd64
- .ubuntu-24.04
- .deps:container
deps:container:ubuntu-24.04:arm64:
extends:
- .arm64
- .ubuntu-24.04
- .deps:container
deps:container:ubuntu-26.04:amd64:
extends:
- .amd64
- .ubuntu-26.04
- .deps:container
deps:container:ubuntu-26.04:arm64:
extends:
- .arm64
- .ubuntu-26.04
- .deps:container
deps:container:debian-13:amd64:
extends:
- .amd64
- .debian-13
- .deps:container
deps:container:debian-13:arm64:
extends:
- .arm64
- .debian-13
- .deps:container
#
# ╺┳╸┏━╸┏━┓╺┳╸┏━┓
# ┃ ┣╸ ┗━┓ ┃ ┗━┓
# ╹ ┗━╸┗━┛ ╹ ┗━┛
#
test:24.04:gcc-amd64-bundled-libs:
stage: test
image: ${CI_REGISTRY_IMAGE}:ubuntu-24.04-${ARCH}
extends:
- .amd64
- .ubuntu-deps
script:
- ./make_deps.sh
- rm -rf build && mkdir build
- CC=gcc-14 CXX=g++-14 cmake -B build -DPROFILE=ON -DCMAKE_INSTALL_PREFIX=/usr
- make -sC build -j$(nproc)
- make check -sC build
- make -sC build install
- ./build/src/splash --info
- xvfb-run --auto-servernum --server-args='-screen 0 1920x1080x24' ./build/src/splash --child --prefix unittest local &
- xvfb-run --auto-servernum --server-args='-screen 0 1920x1080x24' ./build/src/splash --doNotSpawn --prefix unittest ./data/share/splash/splash.json
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
test:24.04:clang-amd64-system-libs:
stage: test
image: ${CI_REGISTRY_IMAGE}:ubuntu-24.04-${ARCH}
extends:
- .amd64
- .ubuntu-deps
script:
# Test using Clang with system libs
- rm -rf build && mkdir build
- CC=clang CXX=clang++ cmake -B build -DPROFILE=ON -DCMAKE_INSTALL_PREFIX=/usr -DUSE_SYSTEM_LIBS=ON
- make -sC build -j$(nproc)
- make check -sC build
- make -sC build install
- ./build/src/splash --info
- xvfb-run --auto-servernum --server-args='-screen 0 1920x1080x24' ./build/src/splash --child --prefix unittest local &
- xvfb-run --auto-servernum --server-args='-screen 0 1920x1080x24' ./build/src/splash --doNotSpawn --prefix unittest ./data/share/splash/splash.json
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
#
# ┏━┓┏┓╻┏━┓╻ ╻ ╻┏━┓╻┏━┓
# ┣━┫┃┗┫┣━┫┃ ┗┳┛┗━┓┃┗━┓
# ╹ ╹╹ ╹╹ ╹┗━╸ ╹ ┗━┛╹┗━┛
#
analysis:coverage:
stage: analysis
image: ${CI_REGISTRY_IMAGE}:ubuntu-26.04-${ARCH}
extends:
- .amd64
- .ubuntu-deps
script:
- DEBIAN_FRONTEND=noninteractive apt install -y --no-install-recommends lcov zip
- ./make_deps.sh
- rm -rf build && mkdir build
- cmake -B build -DTEST_COVERAGE=ON
- make -sC build -j$(nproc)
- make -sC build check_coverage
- zip -r coverage.zip build/coverage
coverage: '/ lines......: \d+\.\d+/'
artifacts:
name: "splash_coverage_${CI_COMMIT_REF_NAME}"
paths:
- "coverage.zip"
expire_in: 2 week
rules:
- if: $CI_COMMIT_BRANCH == 'develop'
analysis:static-analysis:
stage: analysis
image: ${CI_REGISTRY_IMAGE}:ubuntu-26.04-${ARCH}
extends:
- .amd64
- .ubuntu-deps
script:
- DEBIAN_FRONTEND=noninteractive apt install -y clang-tools
- ./make_deps.sh
- rm -rf build && mkdir build
- scan-build cmake -B build -DCMAKE_BUILD_TYPE=Debug -DPROFILE=ON -DCMAKE_INSTALL_PREFIX=/usr
- scan-build -o ./analysis make -sC build -j$(nproc)
artifacts:
name: "splash_${CI_COMMIT_REF_NAME}_analysis"
paths:
- "analysis"
expire_in: 2 week
rules:
- if: $CI_COMMIT_BRANCH == 'staging'
analysis:thread-sanitizer:
stage: analysis
image: ${CI_REGISTRY_IMAGE}:ubuntu-26.04-${ARCH}
extends:
- .amd64
- .ubuntu-deps
allow_failure: true
script:
- DEBIAN_FRONTEND=noninteractive apt install -y clang
- ./make_deps.sh
- rm -rf build && mkdir build
- CC=clang CXX=clang++ cmake -B build -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-fsanitize=thread" -DPROFILE=ON -DCMAKE_INSTALL_PREFIX=/usr
- make -sC build -j$(nproc)
- make -sC build install
# Here we use setarch to disable address randomization, which messes with
# the sanitizers since Linux kernl 6.6.6
- setarch $(uname -m) -R make check -sC build
- setarch $(uname -m) -R ./build/src/splash --info
- xvfb-run --auto-servernum --server-args='-screen 0 1920x1080x24' setarch $(uname -m) -R ./build/src/splash --child --prefix unittest local &
- xvfb-run --auto-servernum --server-args='-screen 0 1920x1080x24' setarch $(uname -m) -R ./build/src/splash --doNotSpawn --prefix unittest ./data/share/splash/splash.json
rules:
- if: $CI_COMMIT_BRANCH == 'staging' || $CI_COMMIT_BRANCH == 'sanitize'
analysis:sanitizer:
stage: analysis
image: ${CI_REGISTRY_IMAGE}:ubuntu-26.04-${ARCH}
extends:
- .amd64
- .ubuntu-deps
allow_failure: true
script:
- DEBIAN_FRONTEND=noninteractive apt install -y clang
- ./make_deps.sh
- rm -rf build && mkdir build
- CC=clang CXX=clang++ cmake -B build -DCMAKE_BUILD_TYPE=Debug -DWITH_SANITIZE=ON -DPROFILE=ON -DCMAKE_INSTALL_PREFIX=/usr
- make -sC build -j$(nproc)
- make -sC build install
- setarch $(uname -m) -R make check -sC build
- setarch $(uname -m) -R ./build/src/splash --info
- xvfb-run --auto-servernum --server-args='-screen 0 1920x1080x24' setarch $(uname -m) -R ./build/src/splash --child --prefix unittest local &
- xvfb-run --auto-servernum --server-args='-screen 0 1920x1080x24' setarch $(uname -m) -R ./build/src/splash --doNotSpawn --prefix unittest ./data/share/splash/splash.json
rules:
- if: $CI_COMMIT_BRANCH == 'staging' || $CI_COMMIT_BRANCH == 'sanitize'
#
# ┏━┓╺┳╸┏━┓┏━╸╻┏┓╻┏━╸
# ┗━┓ ┃ ┣━┫┃╺┓┃┃┗┫┃╺┓
# ┗━┛ ╹ ╹ ╹┗━┛╹╹ ╹┗━┛
#
staging:24.04:gcc-amd64-system-libs:
stage: staging
image: ${CI_REGISTRY_IMAGE}:ubuntu-24.04-${ARCH}
extends:
- .amd64
- .ubuntu-deps
script:
- rm -rf build && mkdir build
- CC=gcc-14 CXX=g++-14 cmake -B build -DCMAKE_BUILD_TYPE=Debug -DPROFILE=ON -DUSE_SYSTEM_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr
- make -sC build -j$(nproc)
- make check -sC build
- make package -sC build
- make -sC build install
- ./build/src/splash --info
- xvfb-run --auto-servernum --server-args='-screen 0 1920x1080x24' ./build/src/splash --child --prefix unittest local &
- xvfb-run --auto-servernum --server-args='-screen 0 1920x1080x24' ./build/src/splash --doNotSpawn --prefix unittest ./data/share/splash/splash.json
rules:
- if: $CI_COMMIT_BRANCH == 'staging'
staging:24.04:clang-amd64-system-libs:
stage: staging
image: ${CI_REGISTRY_IMAGE}:ubuntu-24.04-${ARCH}
extends:
- .amd64
- .ubuntu-deps
script:
- rm -rf build && mkdir build
- CC=clang CXX=clang++ cmake -B build -DCMAKE_BUILD_TYPE=Debug -DPROFILE=ON -DUSE_SYSTEM_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr
- make -sC build -j$(nproc)
- make check -sC build
- make package -sC build
- make -sC build install
- ./build/src/splash --info
- xvfb-run --auto-servernum --server-args='-screen 0 1920x1080x24' ./build/src/splash --child --prefix unittest local &
- xvfb-run --auto-servernum --server-args='-screen 0 1920x1080x24' ./build/src/splash --doNotSpawn --prefix unittest ./data/share/splash/splash.json
rules:
- if: $CI_COMMIT_BRANCH == 'staging'
staging:26.04:gcc-amd64-system-libs:
stage: staging
image: ${CI_REGISTRY_IMAGE}:ubuntu-26.04-${ARCH}
extends:
- .amd64
- .ubuntu-deps
script:
- rm -rf build && mkdir build
- cmake -B build -DCMAKE_BUILD_TYPE=Debug -DPROFILE=ON -DUSE_SYSTEM_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr
- make -sC build -j$(nproc)
- make check -sC build
- make package -sC build
- make -sC build install
- ./build/src/splash --info
- xvfb-run --auto-servernum --server-args='-screen 0 1920x1080x24' ./build/src/splash --child --prefix unittest local &
- xvfb-run --auto-servernum --server-args='-screen 0 1920x1080x24' ./build/src/splash --doNotSpawn --prefix unittest ./data/share/splash/splash.json
rules:
- if: $CI_COMMIT_BRANCH == 'staging'
staging:26.04:clang-amd64-system-libs:
stage: staging
image: ${CI_REGISTRY_IMAGE}:ubuntu-26.04-${ARCH}
extends:
- .amd64
- .ubuntu-deps
script:
- rm -rf build && mkdir build
- CC=clang CXX=clang++ cmake -B build -DCMAKE_BUILD_TYPE=Debug -DPROFILE=ON -DUSE_SYSTEM_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr
- make -sC build -j$(nproc)
- make check -sC build
- make package -sC build
- make -sC build install
- ./build/src/splash --info
- xvfb-run --auto-servernum --server-args='-screen 0 1920x1080x24' ./build/src/splash --child --prefix unittest local &
- xvfb-run --auto-servernum --server-args='-screen 0 1920x1080x24' ./build/src/splash --doNotSpawn --prefix unittest ./data/share/splash/splash.json
rules:
- if: $CI_COMMIT_BRANCH == 'staging'
staging:debian-13:clang-amd64-bundled-libs:
stage: staging
image: ${CI_REGISTRY_IMAGE}:debian-13-${ARCH}
extends:
- .amd64
- .debian-deps
script:
- ./make_deps.sh
- rm -rf build && mkdir build
- cmake -B build -DCMAKE_BUILD_TYPE=Debug -DPROFILE=ON -DCMAKE_INSTALL_PREFIX=/usr
- make -sC build -j$(nproc)
- make check -sC build
- make package -sC build
- make -sC build install
- ./build/src/splash --info
- xvfb-run --auto-servernum --server-args='-screen 0 1920x1080x24' ./build/src/splash --child --prefix unittest local &
- xvfb-run --auto-servernum --server-args='-screen 0 1920x1080x24' ./build/src/splash --doNotSpawn --prefix unittest ./data/share/splash/splash.json
rules:
- if: $CI_COMMIT_BRANCH == 'staging'
staging:fedora:gcc-amd64-system-libs:
stage: staging
extends:
- .amd64
image: fedora:latest
allow_failure: true
before_script:
# We need a few additional dependencies from the RPM Fusion repository
- dnf install --assumeyes https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
- dnf update --assumeyes
- dnf install --assumeyes gcc g++ cmake gsl-devel atlas-devel libgphoto2-devel python3-devel
yasm portaudio-devel python3-numpy opencv-devel jsoncpp-devel libuuid-devel libX11-devel
libXrandr-devel libXinerama-devel libXcursor-devel libXi-devel mesa-libGL-devel ccache
libavcodec-free-devel libavformat-free-devel libavutil-free-devel libswscale-free-devel
libasan libubsan wayland-devel libxkbcommon-devel ninja-build xorg-x11-server-Xvfb gawk
mold liblo-devel websocketpp-devel asio-devel
- mkdir -p ccache
- export CCACHE_BASEDIR=${PWD}
- export CCACHE_DIR=${PWD}/ccache
- export PATH="/usr/lib/ccache:${PATH}"
- ./make_deps.sh
script:
- rm -rf build && mkdir build
- cmake -B build -DCMAKE_BUILD_TYPE=Debug -DPROFILE=ON -DCMAKE_INSTALL_PREFIX=/usr
- make -sC build -j$(nproc)
- make -sC build check
- make -sC build install
- ./build/src/splash --info
- xvfb-run --auto-servernum --server-args='-screen 0 1920x1080x24' ./build/src/splash --child --prefix unittest local &
- xvfb-run --auto-servernum --server-args='-screen 0 1920x1080x24' ./build/src/splash --doNotSpawn --prefix unittest ./data/share/splash/splash.json
rules:
- if: $CI_COMMIT_BRANCH == 'staging' || $CI_COMMIT_BRANCH == 'fedora'
staging:archlinux:gcc-amd64-bundled-libs:
stage: staging
extends:
- .amd64
image: archlinux:latest
allow_failure: true
before_script:
- pacman -Syyu --noconfirm --disable-download-timeout
- pacman -Sy --noconfirm --disable-download-timeout git cmake ninja gcc yasm pkgconfig
libxi libxinerama libxrandr libxcursor jsoncpp mesa glm gsl libgphoto2 python3
portaudio zip zlib ffmpeg opencv qt6-base vtk hdf5 glew libxkbcommon fmt make
xorg-server-xvfb mold liblo websocketpp asio
- mkdir -p ccache
- export CCACHE_BASEDIR=${PWD}
- export CCACHE_DIR=${PWD}/ccache
- export PATH="/usr/lib/ccache:${PATH}"
- ./make_deps.sh
script:
- rm -rf build && mkdir build
- cmake -B build -DCMAKE_BUILD_TYPE=Debug -DPROFILE=ON -DCMAKE_INSTALL_PREFIX=/usr
- make -sC build -j$(nproc)
- make -sC build check
- make -sC build install
- ./build/src/splash --info
- xvfb-run --auto-servernum --server-args='-screen 0 1920x1080x24' ./build/src/splash --child --prefix unittest local &
- xvfb-run --auto-servernum --server-args='-screen 0 1920x1080x24' ./build/src/splash --doNotSpawn --prefix unittest ./data/share/splash/splash.json
rules:
- if: $CI_COMMIT_BRANCH == 'staging' || $CI_COMMIT_BRANCH == 'archlinux'
staging:flatpak:
# Note: to run flatpak-builder inside docker, it needs to be configured as privileged
# in the Gitlab configuration file (usually in /etc/gitlab-runner/config.toml)
stage: staging
extends:
- .amd64
image: fedora:latest
allow_failure: false
before_script:
- dnf install -y flatpak-builder
- flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
- flatpak install -y flathub org.freedesktop.Platform//25.08 org.freedesktop.Sdk//25.08
script:
- rm -rf splash.tar.gz && touch splash.tar.gz
- tar --exclude='.git' --exclude='ccache' --exclude='splash.tar.gz' -cvzf splash.tar.gz .
- cd tests/packaging
- flatpak-builder --ccache --repo=flatpak_repo build --force-clean xyz.splashmapper.Splash.json
- flatpak build-bundle flatpak_repo splash.flatpak xyz.splashmapper.Splash
- mv splash.flatpak ../../
rules:
- if: $CI_COMMIT_BRANCH == 'staging' || $CI_COMMIT_BRANCH == 'flatpak'
artifacts:
name: "splash-flatpak"
paths:
- "splash.flatpak"
expire_in: 2 weeks
staging:windows:
# Note: this job works on Windows with MSYS2 / MINGW64 already installed
# See the README.md file or the manual compilation guide on the website
# for more information
stage: staging
tags:
- windows
variables:
MSYSTEM: 'UCRT64'
CHERE_INVOKING: 'yes'
script:
- C:\msys64\usr\bin\bash -lc 'pacman -Syuu --noconfirm'
- C:\msys64\usr\bin\bash -lc 'pacman -Syuu --noconfirm --needed zip git'
- C:\msys64\usr\bin\bash -lc 'pacman -Syuu --noconfirm --needed mingw-w64-ucrt-x86_64-{cmake,make,gcc,yasm,pkgconf,jsoncpp,glm,gsl,python3,portaudio,zlib,ffmpeg,zeromq,cppzmq,snappy,opencv,gphoto2}'
- C:\msys64\usr\bin\bash -lc 'bash -x ./tools/build_windows'
artifacts:
name: "splash_windows_installer"
paths:
- "splash-*-win64.exe"
expire_in: 2 weeks
rules:
- if: $CI_COMMIT_BRANCH == 'staging' || $CI_COMMIT_BRANCH == 'windows'
#
# ┏━┓┏━┓┏━╸╻┏ ┏━┓┏━╸┏━╸
# ┣━┛┣━┫┃ ┣┻┓┣━┫┃╺┓┣╸
# ╹ ╹ ╹┗━╸╹ ╹╹ ╹┗━┛┗━╸
#
#
# Ubuntu 24.04
#
.package:ubuntu:24.04:
stage: package
image: ${CI_REGISTRY_IMAGE}:ubuntu-24.04-${ARCH}
extends:
- .ubuntu-deps
script:
# Build package
- ./make_deps.sh
- rm -rf build && mkdir build && cd build
- CC=gcc-14 CXX=g++-14 cmake -DBUILD_GENERIC_ARCH=ON -DWITH_LTO=ON -DCMAKE_INSTALL_PREFIX=/usr -DUSE_SYSTEM_LIBS=ON ..
- make -j$(nproc)
- make package
- mv *.deb ../
artifacts:
name: "splash_${CI_COMMIT_REF_NAME}"
paths:
- "*.deb"
expire_in: never
rules:
- if: $CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+$/
- if: $CI_COMMIT_BRANCH == 'master'
package:ubuntu:24.04:amd64:
extends:
- .package:ubuntu:24.04
- .amd64
package:ubuntu:24.04:arm64:
extends:
- .package:ubuntu:24.04
- .arm64
#
# Ubuntu 26.04
#
.package:ubuntu:26.04:
stage: package
image: ${CI_REGISTRY_IMAGE}:ubuntu-26.04-${ARCH}
extends:
- .ubuntu-deps
script:
# Build package
- ./make_deps.sh
- rm -rf build && mkdir build && cd build
- cmake -DBUILD_GENERIC_ARCH=ON -DWITH_LTO=ON -DCMAKE_INSTALL_PREFIX=/usr -DUSE_SYSTEM_LIBS=ON ..
- make -j$(nproc)
- make package
- mv *.deb ../
artifacts:
name: "splash_${CI_COMMIT_REF_NAME}"
paths:
- "*.deb"
expire_in: never
rules:
- if: $CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+$/
- if: $CI_COMMIT_BRANCH == 'master'
package:ubuntu:26.04:amd64:
extends:
- .package:ubuntu:26.04
- .amd64
package:ubuntu:26.04:arm64:
extends:
- .package:ubuntu:26.04
- .arm64
#
# Debian 13
#
.package:debian:13:
stage: package
image: ${CI_REGISTRY_IMAGE}:debian-13-${ARCH}
extends:
- .debian-deps
script:
# Build package
- ./make_deps.sh
- rm -rf build && mkdir build && cd build
- cmake -DBUILD_GENERIC_ARCH=ON -DWITH_LTO=ON -DCMAKE_INSTALL_PREFIX=/usr -DUSE_SYSTEM_LIBS=ON ..
- make -j$(nproc)
- make package
- mv *.deb ../
artifacts:
name: "splash_${CI_COMMIT_REF_NAME}"
paths:
- "*.deb"
expire_in: never
rules:
- if: $CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+$/
- if: $CI_COMMIT_BRANCH == 'master'
package:debian:13:amd64:
extends:
- .package:debian:13
- .amd64
package:debian:13:arm64:
extends:
- .package:debian:13
- .arm64
#
# Blender addon
#
package:blender_addon:
stage: package
image: ${CI_REGISTRY_IMAGE}:ubuntu-24.04-${ARCH}
extends:
- .amd64
- .ubuntu-deps
before_script:
- apt update -qq
- DEBIAN_FRONTEND=noninteractive apt install -y git git-lfs zip cmake build-essential pkg-config
script:
# Build the Blender addon
- rm -rf build && mkdir build && cd build
- cmake -DBUILD_CODE=OFF ..
- make blenderSplash
- mv addons/blender/*.tar.bz2 ../
artifacts:
name: "splash_blender_addon_${CI_COMMIT_REF_NAME}"
paths:
- "*.tar.bz2"
expire_in: never
rules:
- if: $CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+$/
- if: $CI_COMMIT_BRANCH == 'master'
package:fullsources:
stage: package
image: alpine
before_script:
- apk update && apk upgrade
script:
# This job packages the whole sources, including the submodules
- rm -rf splash.tar.gz && touch splash.tar.gz
- tar --exclude='.git' --exclude='ccache' --exclude='splash.tar.gz' -cvzf splash.tar.gz .
artifacts:
paths:
- splash.tar.gz
expire_in: never
rules:
- if: $CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+$/
- if: $CI_COMMIT_BRANCH == 'master'
package:windows:
# Note: this job works on Windows with MSYS2 / MINGW64 already installed
# See the README.md file or the manual compilation guide on the website
# for more information
stage: package
tags:
- windows
variables:
MSYSTEM: 'UCRT64'
CHERE_INVOKING: 'yes'
script:
- C:\msys64\usr\bin\bash -lc 'pacman -Syuu --noconfirm'
- C:\msys64\usr\bin\bash -lc 'pacman -Syuu --noconfirm --needed zip git'
- C:\msys64\usr\bin\bash -lc 'pacman -Syuu --noconfirm --needed mingw-w64-ucrt-x86_64-{cmake,make,gcc,yasm,pkgconf,jsoncpp,glm,gsl,python3,portaudio,zlib,ffmpeg,zeromq,cppzmq,snappy,opencv,gphoto2}'
- C:\msys64\usr\bin\bash -lc 'bash -x ./tools/build_windows'
artifacts:
name: "splash_windows_installer"
paths:
- "splash-*-win64.exe"
expire_in: never
rules:
- if: $CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+$/
- if: $CI_COMMIT_BRANCH == 'master'
#
# ╺┳┓┏━╸┏━┓╻ ┏━┓╻ ╻
# ┃┃┣╸ ┣━┛┃ ┃ ┃┗┳┛
# ╺┻┛┗━╸╹ ┗━╸┗━┛ ╹
#
pages:
stage: deploy
image: ${CI_REGISTRY_IMAGE}:ubuntu-24.04-${ARCH}
extends:
- .amd64
- .ubuntu-deps
variables:
GIT_SUBMODULE_STRATEGY: recursive
script:
# Here we build only the API doc, for testing purposes
- DEBIAN_FRONTEND=noninteractive apt install -y --no-install-recommends doxygen
- mkdir -p build && pushd build
- cmake -DBUILD_CODE=OFF .. && make doc && cp -r docs/html ../public
rules:
- if: $CI_COMMIT_BRANCH == 'develop'
- if: $CI_COMMIT_BRANCH == 'master'
artifacts:
paths:
- public
expire_in: 2 week