mirror of
https://gitlab.com/splashmapper/splash.git
synced 2026-05-01 21:45:34 +02:00
680 lines
22 KiB
YAML
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
|