ci: disable GitLab CI configuration

- Comment out all GitLab CI stages (build, test, package)
- Preserve original configuration for future reference
- Switch to GitHub Actions for CI/CD automation
- Prevents unnecessary automated builds on GitLab VPS

Signed-off-by: Zephyron <zephyron@citron-emu.org>
This commit is contained in:
Zephyron
2025-10-17 17:29:16 +10:00
parent 99073c8e19
commit 3f71089f6d

View File

@@ -1,432 +1,435 @@
# GitLab CI config for Citron # GitLab CI config for Citron - DISABLED
stages: # This CI configuration has been disabled as GitHub Actions is now being used
- build # To re-enable, uncomment the configuration below
- test
- package
variables: # stages:
BUILD_TYPE: "Release" # - build
CMAKE_BUILD_PARALLEL_LEVEL: "4" # - test
DOCKER_DRIVER: overlay2 # - package
DOCKER_TLS_CERTDIR: ""
# Cache configuration for faster builds # variables:
cache: # BUILD_TYPE: "Release"
paths: # CMAKE_BUILD_PARALLEL_LEVEL: "4"
- build/vcpkg_installed/ # DOCKER_DRIVER: overlay2
- build/_deps/ # DOCKER_TLS_CERTDIR: ""
key: "$CI_COMMIT_REF_SLUG"
policy: pull-push # # Cache configuration for faster builds
# cache:
# paths:
# - build/vcpkg_installed/
# - build/_deps/
# key: "$CI_COMMIT_REF_SLUG"
# policy: pull-push
# Linux Build (CachyOS optimized) # # Linux Build (CachyOS optimized)
build-linux: # build-linux:
stage: build # stage: build
image: cachyos/cachyos:latest # image: cachyos/cachyos:latest
tags: # tags:
- citron-build # - citron-build
before_script: # before_script:
- pacman -Syu --noconfirm # - pacman -Syu --noconfirm
- pacman -S --noconfirm alsa-lib base-devel boost boost-libs catch2 cmake curl ffmpeg fmt fuse2 gamemode gcc gdb git glslang glu libusb libxi libxkbcommon libxkbcommon-x11 libxss libzip lz4 mbedtls2 mesa nasm ninja nlohmann-json openal openssl opus perl pipewire-audio pulseaudio pulseaudio-alsa qt6-base qt6-multimedia qt6-tools qt6-wayland sdl2 sdl2-compat unzip vulkan-headers vulkan-icd-loader vulkan-mesa-layers wget xcb-util-cursor xcb-util-image xcb-util-keysyms xcb-util-renderutil xcb-util-wm xorg-server-xvfb zip zstd zsync # - pacman -S --noconfirm alsa-lib base-devel boost boost-libs catch2 cmake curl ffmpeg fmt fuse2 gamemode gcc gdb git glslang glu libusb libxi libxkbcommon libxkbcommon-x11 libxss libzip lz4 mbedtls2 mesa nasm ninja nlohmann-json openal openssl opus perl pipewire-audio pulseaudio pulseaudio-alsa qt6-base qt6-multimedia qt6-tools qt6-wayland sdl2 sdl2-compat unzip vulkan-headers vulkan-icd-loader vulkan-mesa-layers wget xcb-util-cursor xcb-util-image xcb-util-keysyms xcb-util-renderutil xcb-util-wm xorg-server-xvfb zip zstd zsync
- echo '#!/bin/bash' > /usr/local/bin/shasum # - echo '#!/bin/bash' > /usr/local/bin/shasum
- echo 'if [ "$1" = "-a" ] && [ "$2" = "256" ]; then' >> /usr/local/bin/shasum # - echo 'if [ "$1" = "-a" ] && [ "$2" = "256" ]; then' >> /usr/local/bin/shasum
- echo ' shift 2' >> /usr/local/bin/shasum # - echo ' shift 2' >> /usr/local/bin/shasum
- echo ' sha256sum "$@"' >> /usr/local/bin/shasum # - echo ' sha256sum "$@"' >> /usr/local/bin/shasum
- echo 'else' >> /usr/local/bin/shasum # - echo 'else' >> /usr/local/bin/shasum
- echo ' sha256sum "$@"' >> /usr/local/bin/shasum # - echo ' sha256sum "$@"' >> /usr/local/bin/shasum
- echo 'fi' >> /usr/local/bin/shasum # - echo 'fi' >> /usr/local/bin/shasum
- chmod +x /usr/local/bin/shasum # - chmod +x /usr/local/bin/shasum
script: | # script: |
# Clean and reset submodules to handle any inconsistencies # # Clean and reset submodules to handle any inconsistencies
git submodule deinit --all --force || true # git submodule deinit --all --force || true
# Forcefully remove stale lock files that can block submodule updates # # Forcefully remove stale lock files that can block submodule updates
find .git/modules -type f -name "*.lock" -delete # find .git/modules -type f -name "*.lock" -delete
git submodule update --init --recursive --force # git submodule update --init --recursive --force
mkdir -p build && cd build # mkdir -p build && cd build
# Dynamically find the Qt private header path # # Dynamically find the Qt private header path
HEADER_PATH=$(pacman -Ql qt6-base | grep 'qpa/qplatformnativeinterface.h$' | awk '{print $2}') # HEADER_PATH=$(pacman -Ql qt6-base | grep 'qpa/qplatformnativeinterface.h$' | awk '{print $2}')
if [ -z "$HEADER_PATH" ]; then echo "ERROR: Could not find qplatformnativeinterface.h path." >&2; exit 1; fi # if [ -z "$HEADER_PATH" ]; then echo "ERROR: Could not find qplatformnativeinterface.h path." >&2; exit 1; fi
QT_PRIVATE_INCLUDE_DIR=$(dirname "$(dirname "$HEADER_PATH")") # QT_PRIVATE_INCLUDE_DIR=$(dirname "$(dirname "$HEADER_PATH")")
echo "Found Qt private include directory: ${QT_PRIVATE_INCLUDE_DIR}" # echo "Found Qt private include directory: ${QT_PRIVATE_INCLUDE_DIR}"
# Configure and build with the dynamically found path # # Configure and build with the dynamically found path
cmake .. \ # cmake .. \
-G Ninja \ # -G Ninja \
-DCMAKE_C_COMPILER=gcc \ # -DCMAKE_C_COMPILER=gcc \
-DCMAKE_CXX_COMPILER=g++ \ # -DCMAKE_CXX_COMPILER=g++ \
-DCMAKE_BUILD_TYPE=Release \ # -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \ # -DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \ # -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
-DUSE_SYSTEM_QT=ON \ # -DUSE_SYSTEM_QT=ON \
-DCMAKE_C_FLAGS="-O3 -ffast-math -funsafe-math-optimizations -fno-math-errno -fno-trapping-math -freciprocal-math -ffp-contract=fast -fassociative-math -fno-rounding-math -fno-signaling-nans -march=x86-64-v2 -mtune=native -fomit-frame-pointer -fstrict-aliasing -frename-registers -fno-plt -funroll-loops -floop-interchange -floop-strip-mine -floop-block -fprefetch-loop-arrays -fpredictive-commoning -ftree-vectorize -fsplit-paths -finline-functions -finline-limit=1000 -finline-functions-called-once -fgcse-sm -fgcse-las -freorder-blocks-and-partition -fipa-pta -fipa-cp-clone -fwhole-program -flto=auto -fuse-linker-plugin -fvisibility=hidden -fdata-sections -ffunction-sections -fno-semantic-interposition -fopenmp -fexceptions -frtti" \ # -DCMAKE_C_FLAGS="-O3 -ffast-math -funsafe-math-optimizations -fno-math-errno -fno-trapping-math -freciprocal-math -ffp-contract=fast -fassociative-math -fno-rounding-math -fno-signaling-nans -march=x86-64-v2 -mtune=native -fomit-frame-pointer -fstrict-aliasing -frename-registers -fno-plt -funroll-loops -floop-interchange -floop-strip-mine -floop-block -fprefetch-loop-arrays -fpredictive-commoning -ftree-vectorize -fsplit-paths -finline-functions -finline-limit=1000 -finline-functions-called-once -fgcse-sm -fgcse-las -freorder-blocks-and-partition -fipa-pta -fipa-cp-clone -fwhole-program -flto=auto -fuse-linker-plugin -fvisibility=hidden -fdata-sections -ffunction-sections -fno-semantic-interposition -fopenmp -fexceptions -frtti" \
-DCMAKE_CXX_FLAGS="-I${QT_PRIVATE_INCLUDE_DIR} -O3 -ffast-math -funsafe-math-optimizations -fno-math-errno -fno-trapping-math -freciprocal-math -ffp-contract=fast -fassociative-math -fno-rounding-math -fno-signaling-nans -march=x86-64-v2 -mtune=native -fomit-frame-pointer -fstrict-aliasing -frename-registers -fno-plt -funroll-loops -floop-interchange -floop-strip-mine -floop-block -fprefetch-loop-arrays -fpredictive-commoning -ftree-vectorize -fsplit-paths -finline-functions -finline-limit=1000 -finline-functions-called-once -fgcse-sm -fgcse-las -freorder-blocks-and-partition -fipa-pta -fipa-cp-clone -fwhole-program -flto=auto -fuse-linker-plugin -fvisibility=hidden -fdata-sections -ffunction-sections -fno-semantic-interposition -fopenmp -fexceptions -frtti -Wno-error -w" \ # -DCMAKE_CXX_FLAGS="-I${QT_PRIVATE_INCLUDE_DIR} -O3 -ffast-math -funsafe-math-optimizations -fno-math-errno -fno-trapping-math -freciprocal-math -ffp-contract=fast -fassociative-math -fno-rounding-math -fno-signaling-nans -march=x86-64-v2 -mtune=native -fomit-frame-pointer -fstrict-aliasing -frename-registers -fno-plt -funroll-loops -floop-interchange -floop-strip-mine -floop-block -fprefetch-loop-arrays -fpredictive-commoning -ftree-vectorize -fsplit-paths -finline-functions -finline-limit=1000 -finline-functions-called-once -fgcse-sm -fgcse-las -freorder-blocks-and-partition -fipa-pta -fipa-cp-clone -fwhole-program -flto=auto -fuse-linker-plugin -fvisibility=hidden -fdata-sections -ffunction-sections -fno-semantic-interposition -fopenmp -fexceptions -frtti -Wno-error -w" \
-DCMAKE_EXE_LINKER_FLAGS="-Wl,--gc-sections -Wl,-O2 -Wl,--as-needed" \ # -DCMAKE_EXE_LINKER_FLAGS="-Wl,--gc-sections -Wl,-O2 -Wl,--as-needed" \
-DSDL_PIPEWIRE=OFF \ # -DSDL_PIPEWIRE=OFF \
-DCITRON_USE_BUNDLED_VCPKG=OFF \ # -DCITRON_USE_BUNDLED_VCPKG=OFF \
-DUSE_DISCORD_PRESENCE=OFF \ # -DUSE_DISCORD_PRESENCE=OFF \
-DBUNDLE_SPEEX=ON \ # -DBUNDLE_SPEEX=ON \
-DCITRON_USE_BUNDLED_FFMPEG=OFF \ # -DCITRON_USE_BUNDLED_FFMPEG=OFF \
-DCITRON_USE_QT_MULTIMEDIA=OFF \ # -DCITRON_USE_QT_MULTIMEDIA=OFF \
-DCITRON_USE_QT_WEB_ENGINE=OFF # -DCITRON_USE_QT_WEB_ENGINE=OFF
ninja # ninja
cd .. # cd ..
echo "Build completed, checking for executables..." # echo "Build completed, checking for executables..."
ls -la build/bin/ || echo "No build/bin directory found" # ls -la build/bin/ || echo "No build/bin directory found"
find build/ -name "*.so" -o -name "citron*" | head -20 || echo "No shared libraries or executables found" # find build/ -name "*.so" -o -name "citron*" | head -20 || echo "No shared libraries or executables found"
echo "Checking library dependencies..." # echo "Checking library dependencies..."
ldd build/bin/citron || echo "citron binary not found or ldd failed" # ldd build/bin/citron || echo "citron binary not found or ldd failed"
chmod +x AppImage-build-local.sh # chmod +x AppImage-build-local.sh
echo "Attempting AppImage build with FUSE workaround..." # echo "Attempting AppImage build with FUSE workaround..."
export APPIMAGE_EXTRACT_AND_RUN=1 # export APPIMAGE_EXTRACT_AND_RUN=1
export ARCH=x86_64 # export ARCH=x86_64
export VERSION=$(git describe --tags --always) # export VERSION=$(git describe --tags --always)
echo "Testing shasum compatibility..." # echo "Testing shasum compatibility..."
which shasum || echo "shasum not found in PATH" # which shasum || echo "shasum not found in PATH"
echo "Testing shasum -a 256 syntax..." # echo "Testing shasum -a 256 syntax..."
echo "test" | shasum -a 256 || echo "shasum -a 256 failed" # echo "test" | shasum -a 256 || echo "shasum -a 256 failed"
echo "test" | sha256sum || echo "sha256sum failed" # echo "test" | sha256sum || echo "sha256sum failed"
echo "Running AppImage build..." # echo "Running AppImage build..."
./AppImage-build-local.sh || echo "AppImage build failed, continuing..." # ./AppImage-build-local.sh || echo "AppImage build failed, continuing..."
ls -la *.AppImage || echo "No AppImage files found" # ls -la *.AppImage || echo "No AppImage files found"
echo "AppImage size information:" # echo "AppImage size information:"
du -h *.AppImage || echo "No AppImage to measure" # du -h *.AppImage || echo "No AppImage to measure"
echo "Total artifact size:" # echo "Total artifact size:"
du -sh citron.AppImage build/bin/citron 2>/dev/null || echo "Cannot measure artifact sizes" # du -sh citron.AppImage build/bin/citron 2>/dev/null || echo "Cannot measure artifact sizes"
echo "Compressing AppImage for upload..." # echo "Compressing AppImage for upload..."
gzip -9 -c citron.AppImage > citron.AppImage.gz # gzip -9 -c citron.AppImage > citron.AppImage.gz
ls -la citron.AppImage.gz # ls -la citron.AppImage.gz
du -h citron.AppImage.gz # du -h citron.AppImage.gz
echo "AppImage compressed with gzip successfully" # echo "AppImage compressed with gzip successfully"
tar -czf citron-binary.tar.gz build/bin/ # tar -czf citron-binary.tar.gz build/bin/
ls -la citron-binary.tar.gz # ls -la citron-binary.tar.gz
du -h citron-binary.tar.gz # du -h citron-binary.tar.gz
artifacts: # artifacts:
paths: # paths:
- citron.AppImage.gz # - citron.AppImage.gz
- citron-binary.tar.gz # - citron-binary.tar.gz
expire_in: 1 week # expire_in: 1 week
when: always # when: always
only: # only:
- main # - main
- master # - master
- develop # - develop
- ci-fixes # - ci-fixes
- Boss-Build-Flags-For-CI-CMAKE-ON-CachyOS # - Boss-Build-Flags-For-CI-CMAKE-ON-CachyOS
- merge_requests # - merge_requests
# Linux Build (CachyOS v3 optimized) # # Linux Build (CachyOS v3 optimized)
build-linux-v3: # build-linux-v3:
stage: build # stage: build
image: cachyos/cachyos-v3 # image: cachyos/cachyos-v3
tags: # tags:
- citron-build # - citron-build
before_script: # before_script:
- pacman -Syu --noconfirm # - pacman -Syu --noconfirm
- pacman -S --noconfirm alsa-lib base-devel boost boost-libs catch2 cmake curl ffmpeg fmt fuse2 gamemode gcc gdb git glslang glu libusb libxi libxkbcommon libxkbcommon-x11 libxss libzip lz4 mbedtls2 mesa nasm ninja nlohmann-json openal openssl opus perl pipewire-audio pulseaudio pulseaudio-alsa python-pip qt6-base qt6-multimedia qt6-tools qt6-wayland sdl2 sdl2-compat unzip vulkan-headers vulkan-icd-loader vulkan-mesa-layers wget xcb-util-cursor xcb-util-image xcb-util-keysyms xcb-util-renderutil xcb-util-wm xorg-server-xvfb zip zstd zsync # - pacman -S --noconfirm alsa-lib base-devel boost boost-libs catch2 cmake curl ffmpeg fmt fuse2 gamemode gcc gdb git glslang glu libusb libxi libxkbcommon libxkbcommon-x11 libxss libzip lz4 mbedtls2 mesa nasm ninja nlohmann-json openal openssl opus perl pipewire-audio pulseaudio pulseaudio-alsa python-pip qt6-base qt6-multimedia qt6-tools qt6-wayland sdl2 sdl2-compat unzip vulkan-headers vulkan-icd-loader vulkan-mesa-layers wget xcb-util-cursor xcb-util-image xcb-util-keysyms xcb-util-renderutil xcb-util-wm xorg-server-xvfb zip zstd zsync
- echo '#!/bin/bash' > /usr/local/bin/shasum # - echo '#!/bin/bash' > /usr/local/bin/shasum
- echo 'if [ "$1" = "-a" ] && [ "$2" = "256" ]; then' >> /usr/local/bin/shasum # - echo 'if [ "$1" = "-a" ] && [ "$2" = "256" ]; then' >> /usr/local/bin/shasum
- echo ' shift 2' >> /usr/local/bin/shasum # - echo ' shift 2' >> /usr/local/bin/shasum
- echo ' sha256sum "$@"' >> /usr/local/bin/shasum # - echo ' sha256sum "$@"' >> /usr/local/bin/shasum
- echo 'else' >> /usr/local/bin/shasum # - echo 'else' >> /usr/local/bin/shasum
- echo ' sha256sum "$@"' >> /usr/local/bin/shasum # - echo ' sha256sum "$@"' >> /usr/local/bin/shasum
- echo 'fi' >> /usr/local/bin/shasum # - echo 'fi' >> /usr/local/bin/shasum
- chmod +x /usr/local/bin/shasum # - chmod +x /usr/local/bin/shasum
script: | # script: |
git submodule deinit --all --force || true # git submodule deinit --all --force || true
find .git/modules -type f -name "*.lock" -delete # find .git/modules -type f -name "*.lock" -delete
git submodule update --init --recursive --force # git submodule update --init --recursive --force
mkdir -p build && cd build # mkdir -p build && cd build
HEADER_PATH=$(pacman -Ql qt6-base | grep 'qpa/qplatformnativeinterface.h$' | awk '{print $2}') # HEADER_PATH=$(pacman -Ql qt6-base | grep 'qpa/qplatformnativeinterface.h$' | awk '{print $2}')
if [ -z "$HEADER_PATH" ]; then echo "ERROR: Could not find qplatformnativeinterface.h path." >&2; exit 1; fi # if [ -z "$HEADER_PATH" ]; then echo "ERROR: Could not find qplatformnativeinterface.h path." >&2; exit 1; fi
QT_PRIVATE_INCLUDE_DIR=$(dirname "$(dirname "$HEADER_PATH")") # QT_PRIVATE_INCLUDE_DIR=$(dirname "$(dirname "$HEADER_PATH")")
echo "Found Qt private include directory: ${QT_PRIVATE_INCLUDE_DIR}" # echo "Found Qt private include directory: ${QT_PRIVATE_INCLUDE_DIR}"
cmake .. \ # cmake .. \
-G Ninja \ # -G Ninja \
-DCMAKE_C_COMPILER=gcc \ # -DCMAKE_C_COMPILER=gcc \
-DCMAKE_CXX_COMPILER=g++ \ # -DCMAKE_CXX_COMPILER=g++ \
-DCMAKE_BUILD_TYPE=Release \ # -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \ # -DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \ # -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
-DCMAKE_C_FLAGS="-O3 -ffast-math -funsafe-math-optimizations -fno-math-errno -fno-trapping-math -freciprocal-math -ffp-contract=fast -fassociative-math -fno-rounding-math -fno-signaling-nans -march=x86-64-v3 -mtune=native -fomit-frame-pointer -fstrict-aliasing -frename-registers -fno-plt -funroll-loops -floop-interchange -floop-strip-mine -floop-block -fprefetch-loop-arrays -fpredictive-commoning -ftree-vectorize -fsplit-paths -finline-functions -finline-limit=1000 -finline-functions-called-once -fgcse-sm -fgcse-las -freorder-blocks-and-partition -fipa-pta -fipa-cp-clone -fwhole-program -flto=auto -fuse-linker-plugin -fvisibility=hidden -fdata-sections -ffunction-sections -fno-semantic-interposition -fopenmp -fexceptions -frtti" \ # -DCMAKE_C_FLAGS="-O3 -ffast-math -funsafe-math-optimizations -fno-math-errno -fno-trapping-math -freciprocal-math -ffp-contract=fast -fassociative-math -fno-rounding-math -fno-signaling-nans -march=x86-64-v3 -mtune=native -fomit-frame-pointer -fstrict-aliasing -frename-registers -fno-plt -funroll-loops -floop-interchange -floop-strip-mine -floop-block -fprefetch-loop-arrays -fpredictive-commoning -ftree-vectorize -fsplit-paths -finline-functions -finline-limit=1000 -finline-functions-called-once -fgcse-sm -fgcse-las -freorder-blocks-and-partition -fipa-pta -fipa-cp-clone -fwhole-program -flto=auto -fuse-linker-plugin -fvisibility=hidden -fdata-sections -ffunction-sections -fno-semantic-interposition -fopenmp -fexceptions -frtti" \
-DCMAKE_CXX_FLAGS="-I${QT_PRIVATE_INCLUDE_DIR} -O3 -ffast-math -funsafe-math-optimizations -fno-math-errno -fno-trapping-math -freciprocal-math -ffp-contract=fast -fassociative-math -fno-rounding-math -fno-signaling-nans -march=x86-64-v3 -mtune=native -fomit-frame-pointer -fstrict-aliasing -frename-registers -fno-plt -funroll-loops -floop-interchange -floop-strip-mine -floop-block -fprefetch-loop-arrays -fpredictive-commoning -ftree-vectorize -fsplit-paths -finline-functions -finline-limit=1000 -finline-functions-called-once -fgcse-sm -fgcse-las -freorder-blocks-and-partition -fipa-pta -fipa-cp-clone -fwhole-program -flto=auto -fuse-linker-plugin -fvisibility=hidden -fdata-sections -ffunction-sections -fno-semantic-interposition -fopenmp -fexceptions -frtti -Wno-error -w" \ # -DCMAKE_CXX_FLAGS="-I${QT_PRIVATE_INCLUDE_DIR} -O3 -ffast-math -funsafe-math-optimizations -fno-math-errno -fno-trapping-math -freciprocal-math -ffp-contract=fast -fassociative-math -fno-rounding-math -fno-signaling-nans -march=x86-64-v3 -mtune=native -fomit-frame-pointer -fstrict-aliasing -frename-registers -fno-plt -funroll-loops -floop-interchange -floop-strip-mine -floop-block -fprefetch-loop-arrays -fpredictive-commoning -ftree-vectorize -fsplit-paths -finline-functions -finline-limit=1000 -finline-functions-called-once -fgcse-sm -fgcse-las -freorder-blocks-and-partition -fipa-pta -fipa-cp-clone -fwhole-program -flto=auto -fuse-linker-plugin -fvisibility=hidden -fdata-sections -ffunction-sections -fno-semantic-interposition -fopenmp -fexceptions -frtti -Wno-error -w" \
-DCMAKE_EXE_LINKER_FLAGS="-Wl,--gc-sections -Wl,-O2 -Wl,--as-needed" \ # -DCMAKE_EXE_LINKER_FLAGS="-Wl,--gc-sections -Wl,-O2 -Wl,--as-needed" \
-DSDL_PIPEWIRE=OFF \ # -DSDL_PIPEWIRE=OFF \
-DCITRON_USE_BUNDLED_VCPKG=OFF \ # -DCITRON_USE_BUNDLED_VCPKG=OFF \
-DUSE_DISCORD_PRESENCE=OFF \ # -DUSE_DISCORD_PRESENCE=OFF \
-DBUNDLE_SPEEX=ON \ # -DBUNDLE_SPEEX=ON \
-DCITRON_USE_BUNDLED_FFMPEG=OFF \ # -DCITRON_USE_BUNDLED_FFMPEG=OFF \
-DCITRON_USE_QT_MULTIMEDIA=OFF \ # -DCITRON_USE_QT_MULTIMEDIA=OFF \
-DCITRON_USE_QT_WEB_ENGINE=OFF # -DCITRON_USE_QT_WEB_ENGINE=OFF
ninja # ninja
cd .. # cd ..
echo "Build completed, checking for executables..." # echo "Build completed, checking for executables..."
ls -la build/bin/ || echo "No build/bin directory found" # ls -la build/bin/ || echo "No build/bin directory found"
find build/ -name "*.so" -o -name "citron*" | head -20 || echo "No shared libraries or executables found" # find build/ -name "*.so" -o -name "citron*" | head -20 || echo "No shared libraries or executables found"
echo "Checking library dependencies..." # echo "Checking library dependencies..."
ldd build/bin/citron || echo "citron binary not found or ldd failed" # ldd build/bin/citron || echo "citron binary not found or ldd failed"
chmod +x AppImage-build-local.sh # chmod +x AppImage-build-local.sh
echo "Attempting AppImage build with FUSE workaround..." # echo "Attempting AppImage build with FUSE workaround..."
export APPIMAGE_EXTRACT_AND_RUN=1 # export APPIMAGE_EXTRACT_AND_RUN=1
export ARCH=x86_64 # export ARCH=x86_64
export VERSION=$(git describe --tags --always) # export VERSION=$(git describe --tags --always)
echo "Testing shasum compatibility..." # echo "Testing shasum compatibility..."
which shasum || echo "shasum not found in PATH" # which shasum || echo "shasum not found in PATH"
echo "Testing shasum -a 256 syntax..." # echo "Testing shasum -a 256 syntax..."
echo "test" | shasum -a 256 || echo "shasum -a 256 failed" # echo "test" | shasum -a 256 || echo "shasum -a 256 failed"
echo "test" | sha256sum || echo "sha256sum failed" # echo "test" | sha256sum || echo "sha256sum failed"
echo "Running AppImage build..." # echo "Running AppImage build..."
./AppImage-build-local.sh || echo "AppImage build failed, continuing..." # ./AppImage-build-local.sh || echo "AppImage build failed, continuing..."
ls -la *.AppImage || echo "No AppImage files found" # ls -la *.AppImage || echo "No AppImage files found"
echo "AppImage size information:" # echo "AppImage size information:"
du -h *.AppImage || echo "No AppImage to measure" # du -h *.AppImage || echo "No AppImage to measure"
echo "Total artifact size:" # echo "Total artifact size:"
du -sh citron.AppImage build/bin/citron 2>/dev/null || echo "Cannot measure artifact sizes" # du -sh citron.AppImage build/bin/citron 2>/dev/null || echo "Cannot measure artifact sizes"
echo "Compressing AppImage for upload..." # echo "Compressing AppImage for upload..."
gzip -9 -c citron.AppImage > citron.AppImage.gz # gzip -9 -c citron.AppImage > citron.AppImage.gz
ls -la citron.AppImage.gz # ls -la citron.AppImage.gz
du -h citron.AppImage.gz # du -h citron.AppImage.gz
echo "AppImage compressed with gzip successfully" # echo "AppImage compressed with gzip successfully"
tar -czf citron-binary.tar.gz build/bin/ # tar -czf citron-binary.tar.gz build/bin/
ls -la citron-binary.tar.gz # ls -la citron-binary.tar.gz
du -h citron-binary.tar.gz # du -h citron-binary.tar.gz
artifacts: # artifacts:
paths: # paths:
- citron.AppImage.gz # - citron.AppImage.gz
- citron-binary.tar.gz # - citron-binary.tar.gz
expire_in: 1 week # expire_in: 1 week
when: always # when: always
only: # only:
- main # - main
- master # - master
- develop # - develop
- ci-fixes # - ci-fixes
- Boss-Build-Flags-For-CI-CMAKE-ON-CachyOS # - Boss-Build-Flags-For-CI-CMAKE-ON-CachyOS
- merge_requests # - merge_requests
# Linux Build (Steam Deck optimized - AMD Zen 2) # # Linux Build (Steam Deck optimized - AMD Zen 2)
build-linux-steamdeck: # build-linux-steamdeck:
stage: build # stage: build
image: cachyos/cachyos:latest # image: cachyos/cachyos:latest
tags: # tags:
- citron-build # - citron-build
before_script: # before_script:
- pacman -Syu --noconfirm # - pacman -Syu --noconfirm
- pacman -S --noconfirm alsa-lib base-devel boost boost-libs catch2 cmake curl ffmpeg fmt fuse2 gamemode gcc gdb git glslang glu libusb libxi libxkbcommon libxkbcommon-x11 libxss libzip lz4 mbedtls2 mesa nasm ninja nlohmann-json openal openssl opus perl pipewire-audio pulseaudio pulseaudio-alsa python-pip qt6-base qt6-multimedia qt6-tools qt6-wayland sdl2 sdl2-compat unzip vulkan-headers vulkan-icd-loader vulkan-mesa-layers wget xcb-util-cursor xcb-util-image xcb-util-keysyms xcb-util-renderutil xcb-util-wm xorg-server-xvfb zip zstd zsync # - pacman -S --noconfirm alsa-lib base-devel boost boost-libs catch2 cmake curl ffmpeg fmt fuse2 gamemode gcc gdb git glslang glu libusb libxi libxkbcommon libxkbcommon-x11 libxss libzip lz4 mbedtls2 mesa nasm ninja nlohmann-json openal openssl opus perl pipewire-audio pulseaudio pulseaudio-alsa python-pip qt6-base qt6-multimedia qt6-tools qt6-wayland sdl2 sdl2-compat unzip vulkan-headers vulkan-icd-loader vulkan-mesa-layers wget xcb-util-cursor xcb-util-image xcb-util-keysyms xcb-util-renderutil xcb-util-wm xorg-server-xvfb zip zstd zsync
- echo '#!/bin/bash' > /usr/local/bin/shasum # - echo '#!/bin/bash' > /usr/local/bin/shasum
- echo 'if [ "$1" = "-a" ] && [ "$2" = "256" ]; then' >> /usr/local/bin/shasum # - echo 'if [ "$1" = "-a" ] && [ "$2" = "256" ]; then' >> /usr/local/bin/shasum
- echo ' shift 2' >> /usr/local/bin/shasum # - echo ' shift 2' >> /usr/local/bin/shasum
- echo ' sha256sum "$@"' >> /usr/local/bin/shasum # - echo ' sha256sum "$@"' >> /usr/local/bin/shasum
- echo 'else' >> /usr/local/bin/shasum # - echo 'else' >> /usr/local/bin/shasum
- echo ' sha256sum "$@"' >> /usr/local/bin/shasum # - echo ' sha256sum "$@"' >> /usr/local/bin/shasum
- echo 'fi' >> /usr/local/bin/shasum # - echo 'fi' >> /usr/local/bin/shasum
- chmod +x /usr/local/bin/shasum # - chmod +x /usr/local/bin/shasum
script: | # script: |
git submodule deinit --all --force || true # git submodule deinit --all --force || true
find .git/modules -type f -name "*.lock" -delete # find .git/modules -type f -name "*.lock" -delete
git submodule update --init --recursive --force # git submodule update --init --recursive --force
mkdir -p build && cd build # mkdir -p build && cd build
HEADER_PATH=$(pacman -Ql qt6-base | grep 'qpa/qplatformnativeinterface.h$' | awk '{print $2}') # HEADER_PATH=$(pacman -Ql qt6-base | grep 'qpa/qplatformnativeinterface.h$' | awk '{print $2}')
if [ -z "$HEADER_PATH" ]; then echo "ERROR: Could not find qplatformnativeinterface.h path." >&2; exit 1; fi # if [ -z "$HEADER_PATH" ]; then echo "ERROR: Could not find qplatformnativeinterface.h path." >&2; exit 1; fi
QT_PRIVATE_INCLUDE_DIR=$(dirname "$(dirname "$HEADER_PATH")") # QT_PRIVATE_INCLUDE_DIR=$(dirname "$(dirname "$HEADER_PATH")")
echo "Found Qt private include directory: ${QT_PRIVATE_INCLUDE_DIR}" # echo "Found Qt private include directory: ${QT_PRIVATE_INCLUDE_DIR}"
cmake .. \ # cmake .. \
-G Ninja \ # -G Ninja \
-DCMAKE_C_COMPILER=gcc \ # -DCMAKE_C_COMPILER=gcc \
-DCMAKE_CXX_COMPILER=g++ \ # -DCMAKE_CXX_COMPILER=g++ \
-DCMAKE_BUILD_TYPE=Release \ # -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \ # -DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \ # -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
-DCMAKE_C_FLAGS="-O3 -ffast-math -funsafe-math-optimizations -fno-math-errno -fno-trapping-math -freciprocal-math -ffp-contract=fast -fassociative-math -fno-rounding-math -fno-signaling-nans -march=znver2 -mtune=znver2 -fomit-frame-pointer -fstrict-aliasing -frename-registers -fno-plt -funroll-loops -floop-interchange -floop-strip-mine -floop-block -fprefetch-loop-arrays -fpredictive-commoning -ftree-vectorize -fsplit-paths -finline-functions -finline-limit=1000 -finline-functions-called-once -fgcse-sm -fgcse-las -freorder-blocks-and-partition -fipa-pta -fipa-cp-clone -fwhole-program -flto=auto -fuse-linker-plugin -fvisibility=hidden -fdata-sections -ffunction-sections -fno-semantic-interposition -fopenmp -fexceptions -frtti" \ # -DCMAKE_C_FLAGS="-O3 -ffast-math -funsafe-math-optimizations -fno-math-errno -fno-trapping-math -freciprocal-math -ffp-contract=fast -fassociative-math -fno-rounding-math -fno-signaling-nans -march=znver2 -mtune=znver2 -fomit-frame-pointer -fstrict-aliasing -frename-registers -fno-plt -funroll-loops -floop-interchange -floop-strip-mine -floop-block -fprefetch-loop-arrays -fpredictive-commoning -ftree-vectorize -fsplit-paths -finline-functions -finline-limit=1000 -finline-functions-called-once -fgcse-sm -fgcse-las -freorder-blocks-and-partition -fipa-pta -fipa-cp-clone -fwhole-program -flto=auto -fuse-linker-plugin -fvisibility=hidden -fdata-sections -ffunction-sections -fno-semantic-interposition -fopenmp -fexceptions -frtti" \
-DCMAKE_CXX_FLAGS="-I${QT_PRIVATE_INCLUDE_DIR} -O3 -ffast-math -funsafe-math-optimizations -fno-math-errno -fno-trapping-math -freciprocal-math -ffp-contract=fast -fassociative-math -fno-rounding-math -fno-signaling-nans -march=znver2 -mtune=znver2 -fomit-frame-pointer -fstrict-aliasing -frename-registers -fno-plt -funroll-loops -floop-interchange -floop-strip-mine -floop-block -fprefetch-loop-arrays -fpredictive-commoning -ftree-vectorize -fsplit-paths -finline-functions -finline-limit=1000 -finline-functions-called-once -fgcse-sm -fgcse-las -freorder-blocks-and-partition -fipa-pta -fipa-cp-clone -fwhole-program -flto=auto -fuse-linker-plugin -fvisibility=hidden -fdata-sections -ffunction-sections -fno-semantic-interposition -fopenmp -fexceptions -frtti -Wno-error -w" \ # -DCMAKE_CXX_FLAGS="-I${QT_PRIVATE_INCLUDE_DIR} -O3 -ffast-math -funsafe-math-optimizations -fno-math-errno -fno-trapping-math -freciprocal-math -ffp-contract=fast -fassociative-math -fno-rounding-math -fno-signaling-nans -march=znver2 -mtune=znver2 -fomit-frame-pointer -fstrict-aliasing -frename-registers -fno-plt -funroll-loops -floop-interchange -floop-strip-mine -floop-block -fprefetch-loop-arrays -fpredictive-commoning -ftree-vectorize -fsplit-paths -finline-functions -finline-limit=1000 -finline-functions-called-once -fgcse-sm -fgcse-las -freorder-blocks-and-partition -fipa-pta -fipa-cp-clone -fwhole-program -flto=auto -fuse-linker-plugin -fvisibility=hidden -fdata-sections -ffunction-sections -fno-semantic-interposition -fopenmp -fexceptions -frtti -Wno-error -w" \
-DCMAKE_EXE_LINKER_FLAGS="-Wl,--gc-sections -Wl,-O2 -Wl,--as-needed" \ # -DCMAKE_EXE_LINKER_FLAGS="-Wl,--gc-sections -Wl,-O2 -Wl,--as-needed" \
-DSDL_PIPEWIRE=OFF \ # -DSDL_PIPEWIRE=OFF \
-DCITRON_USE_BUNDLED_VCPKG=OFF \ # -DCITRON_USE_BUNDLED_VCPKG=OFF \
-DUSE_DISCORD_PRESENCE=OFF \ # -DUSE_DISCORD_PRESENCE=OFF \
-DBUNDLE_SPEEX=ON \ # -DBUNDLE_SPEEX=ON \
-DCITRON_USE_BUNDLED_FFMPEG=OFF \ # -DCITRON_USE_BUNDLED_FFMPEG=OFF \
-DCITRON_USE_QT_MULTIMEDIA=OFF \ # -DCITRON_USE_QT_MULTIMEDIA=OFF \
-DCITRON_USE_QT_WEB_ENGINE=OFF # -DCITRON_USE_QT_WEB_ENGINE=OFF
ninja # ninja
cd .. # cd ..
echo "Build completed, checking for executables..." # echo "Build completed, checking for executables..."
ls -la build/bin/ || echo "No build/bin directory found" # ls -la build/bin/ || echo "No build/bin directory found"
find build/ -name "*.so" -o -name "citron*" | head -20 || echo "No shared libraries or executables found" # find build/ -name "*.so" -o -name "citron*" | head -20 || echo "No shared libraries or executables found"
echo "Checking library dependencies..." # echo "Checking library dependencies..."
ldd build/bin/citron || echo "citron binary not found or ldd failed" # ldd build/bin/citron || echo "citron binary not found or ldd failed"
chmod +x AppImage-build-local.sh # chmod +x AppImage-build-local.sh
echo "Attempting AppImage build with FUSE workaround..." # echo "Attempting AppImage build with FUSE workaround..."
export APPIMAGE_EXTRACT_AND_RUN=1 # export APPIMAGE_EXTRACT_AND_RUN=1
export ARCH=x86_64 # export ARCH=x86_64
export VERSION=$(git describe --tags --always) # export VERSION=$(git describe --tags --always)
echo "Testing shasum compatibility..." # echo "Testing shasum compatibility..."
which shasum || echo "shasum not found in PATH" # which shasum || echo "shasum not found in PATH"
echo "Testing shasum -a 256 syntax..." # echo "Testing shasum -a 256 syntax..."
echo "test" | shasum -a 256 || echo "shasum -a 256 failed" # echo "test" | shasum -a 256 || echo "shasum -a 256 failed"
echo "test" | sha256sum || echo "sha256sum failed" # echo "test" | sha256sum || echo "sha256sum failed"
echo "Running AppImage build..." # echo "Running AppImage build..."
./AppImage-build-local.sh || echo "AppImage build failed, continuing..." # ./AppImage-build-local.sh || echo "AppImage build failed, continuing..."
ls -la *.AppImage || echo "No AppImage files found" # ls -la *.AppImage || echo "No AppImage files found"
echo "AppImage size information:" # echo "AppImage size information:"
du -h *.AppImage || echo "No AppImage to measure" # du -h *.AppImage || echo "No AppImage to measure"
echo "Total artifact size:" # echo "Total artifact size:"
du -sh citron.AppImage build/bin/citron 2>/dev/null || echo "Cannot measure artifact sizes" # du -sh citron.AppImage build/bin/citron 2>/dev/null || echo "Cannot measure artifact sizes"
echo "Compressing AppImage for upload..." # echo "Compressing AppImage for upload..."
gzip -9 -c citron.AppImage > citron.AppImage.gz # gzip -9 -c citron.AppImage > citron.AppImage.gz
ls -la citron.AppImage.gz # ls -la citron.AppImage.gz
du -h citron.AppImage.gz # du -h citron.AppImage.gz
echo "AppImage compressed with gzip successfully" # echo "AppImage compressed with gzip successfully"
tar -czf citron-binary.tar.gz build/bin/ # tar -czf citron-binary.tar.gz build/bin/
ls -la citron-binary.tar.gz # ls -la citron-binary.tar.gz
du -h citron-binary.tar.gz # du -h citron-binary.tar.gz
artifacts: # artifacts:
paths: # paths:
- citron.AppImage.gz # - citron.AppImage.gz
- citron-binary.tar.gz # - citron-binary.tar.gz
expire_in: 1 week # expire_in: 1 week
when: always # when: always
only: # only:
- main # - main
- master # - master
- develop # - develop
- ci-fixes # - ci-fixes
- Boss-Build-Flags-For-CI-CMAKE-ON-CachyOS # - Boss-Build-Flags-For-CI-CMAKE-ON-CachyOS
- merge_requests # - merge_requests
# Android Build (Ubuntu 24.04 optimized) # # Android Build (Ubuntu 24.04 optimized)
build-android: # build-android:
stage: build # stage: build
image: ubuntu:24.04 # image: ubuntu:24.04
tags: # tags:
- citron-build # - citron-build
before_script: # before_script:
- apt-get update -qq # - apt-get update -qq
- apt-get install -y -qq openjdk-17-jdk wget unzip curl git cmake build-essential pkg-config zip glslang-tools # - apt-get install -y -qq openjdk-17-jdk wget unzip curl git cmake build-essential pkg-config zip glslang-tools
- wget -q https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip # - wget -q https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip
- unzip -q commandlinetools-linux-11076708_latest.zip # - unzip -q commandlinetools-linux-11076708_latest.zip
- mkdir -p android-sdk/cmdline-tools # - mkdir -p android-sdk/cmdline-tools
- mv cmdline-tools android-sdk/cmdline-tools/latest # - mv cmdline-tools android-sdk/cmdline-tools/latest
- export ANDROID_SDK_ROOT=$PWD/android-sdk # - export ANDROID_SDK_ROOT=$PWD/android-sdk
- export PATH=$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin # - export PATH=$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin
- printf "y\ny\ny\ny\ny\ny\ny\n" | sdkmanager --licenses || true # - printf "y\ny\ny\ny\ny\ny\ny\n" | sdkmanager --licenses || true
- sdkmanager "platform-tools" "platforms;android-34" "build-tools;34.0.0" # - sdkmanager "platform-tools" "platforms;android-34" "build-tools;34.0.0"
- wget -q https://dl.google.com/android/repository/android-ndk-r26b-linux.zip # - wget -q https://dl.google.com/android/repository/android-ndk-r26b-linux.zip
- unzip -q android-ndk-r26b-linux.zip # - unzip -q android-ndk-r26b-linux.zip
- export ANDROID_NDK_HOME=$PWD/android-ndk-r26b # - export ANDROID_NDK_HOME=$PWD/android-ndk-r26b
script: # script:
- git submodule deinit --all --force || true # - git submodule deinit --all --force || true
- git submodule update --init --recursive --force # - git submodule update --init --recursive --force
- cmake -B build-android -S . -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-30 -DENABLE_QT=OFF -DENABLE_SDL2=OFF -DENABLE_WEB_SERVICE=OFF -DCITRON_USE_BUNDLED_VCPKG=ON -DCITRON_USE_BUNDLED_FFMPEG=ON -DANDROID_ARM_NEON=ON -DCITRON_ENABLE_LTO=ON # - cmake -B build-android -S . -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-30 -DENABLE_QT=OFF -DENABLE_SDL2=OFF -DENABLE_WEB_SERVICE=OFF -DCITRON_USE_BUNDLED_VCPKG=ON -DCITRON_USE_BUNDLED_FFMPEG=ON -DANDROID_ARM_NEON=ON -DCITRON_ENABLE_LTO=ON
- cmake --build build-android --config $BUILD_TYPE --parallel $CMAKE_BUILD_PARALLEL_LEVEL # - cmake --build build-android --config $BUILD_TYPE --parallel $CMAKE_BUILD_PARALLEL_LEVEL
- cd src/android # - cd src/android
- ./gradlew assembleMainlineRelease # - ./gradlew assembleMainlineRelease
artifacts: # artifacts:
paths: # paths:
- src/android/app/build/outputs/apk/mainline/release/*.apk # - src/android/app/build/outputs/apk/mainline/release/*.apk
expire_in: 1 week # expire_in: 1 week
only: # only:
- main # - main
- master # - master
- develop # - develop
- ci-fixes # - ci-fixes
- merge_requests # - merge_requests
allow_failure: true # allow_failure: true
# Unit Tests # # Unit Tests
test-unit: # test-unit:
stage: test # stage: test
image: ubuntu:24.04 # image: ubuntu:24.04
tags: # tags:
- citron-build # - citron-build
before_script: # before_script:
# Set the environment to be non-interactive # # Set the environment to be non-interactive
- export DEBIAN_FRONTEND=noninteractive # - export DEBIAN_FRONTEND=noninteractive
#
# # Update package lists and install tool for managing repositories
# - apt-get update -qq
# - apt-get install -y -qq software-properties-common
#
# # Reliably add the 'universe' and 'multiverse' repositories
# - add-apt-repository universe
# - add-apt-repository multiverse
#
# # Update the package lists again to include the new repositories
# - apt-get update -qq
#
# # Install all required system packages for the build
# - apt-get install -y -qq
# build-essential
# cmake
# ninja-build
# git
# pkg-config
# catch2
# libasound2-dev
# libpulse-dev
# libboost-all-dev
# libavcodec-dev
# libavfilter-dev
# libavformat-dev
# libavutil-dev
# libswscale-dev
# llvm-17-dev
# gamemode-dev
# libenet-dev
# libfmt-dev
# liblz4-dev
# libopus-dev
# libssl-dev
# libusb-1.0-0-dev
# libvulkan-dev
# nlohmann-json3-dev
# zlib1g-dev
# libzstd-dev
# libopenal-dev
# libedit-dev
# libcurl4-openssl-dev
# libstb-dev
# libcubeb-dev
# libspeexdsp-dev
# libva-dev
# glslang-tools
# libx11-dev
#
# Update package lists and install tool for managing repositories # script:
- apt-get update -qq # - git submodule deinit --all --force || true
- apt-get install -y -qq software-properties-common # - git submodule update --init --recursive --force
# - cmake -B build-test -S . -DCMAKE_BUILD_TYPE=Debug -DCITRON_TESTS=ON -DENABLE_QT=OFF -DENABLE_SDL2=OFF -DENABLE_WEB_SERVICE=OFF
# - cmake --build build-test --config Debug --parallel $CMAKE_BUILD_PARALLEL_LEVEL
# - cd build-test
# - ctest --output-on-failure
# artifacts:
# reports:
# junit: build-test/Testing/**/*.xml
# expire_in: 1 week
# only:
# - main
# - master
# - develop
# - ci-fixes
# - merge_requests
# Reliably add the 'universe' and 'multiverse' repositories # # Package Release
- add-apt-repository universe # package-release:
- add-apt-repository multiverse # stage: package
# image: ubuntu:24.04
# Update the package lists again to include the new repositories # tags:
- apt-get update -qq # - citron-build
# dependencies:
# Install all required system packages for the build # - build-linux
- apt-get install -y -qq # script:
build-essential # - mkdir -p release
cmake # - echo "Creating release package..."
ninja-build # - tar -czf citron-release-$(date +%Y%m%d).tar.gz release/ || true
git # artifacts:
pkg-config # paths:
catch2 # - citron-release-*.tar.gz
libasound2-dev # expire_in: 1 month
libpulse-dev # only:
libboost-all-dev # - main
libavcodec-dev # - master
libavfilter-dev # - develop
libavformat-dev # - ci-fixes
libavutil-dev # - tags
libswscale-dev
llvm-17-dev
gamemode-dev
libenet-dev
libfmt-dev
liblz4-dev
libopus-dev
libssl-dev
libusb-1.0-0-dev
libvulkan-dev
nlohmann-json3-dev
zlib1g-dev
libzstd-dev
libopenal-dev
libedit-dev
libcurl4-openssl-dev
libstb-dev
libcubeb-dev
libspeexdsp-dev
libva-dev
glslang-tools
libx11-dev
script:
- git submodule deinit --all --force || true
- git submodule update --init --recursive --force
- cmake -B build-test -S . -DCMAKE_BUILD_TYPE=Debug -DCITRON_TESTS=ON -DENABLE_QT=OFF -DENABLE_SDL2=OFF -DENABLE_WEB_SERVICE=OFF
- cmake --build build-test --config Debug --parallel $CMAKE_BUILD_PARALLEL_LEVEL
- cd build-test
- ctest --output-on-failure
artifacts:
reports:
junit: build-test/Testing/**/*.xml
expire_in: 1 week
only:
- main
- master
- develop
- ci-fixes
- merge_requests
# Package Release
package-release:
stage: package
image: ubuntu:24.04
tags:
- citron-build
dependencies:
- build-linux
script:
- mkdir -p release
- echo "Creating release package..."
- tar -czf citron-release-$(date +%Y%m%d).tar.gz release/ || true
artifacts:
paths:
- citron-release-*.tar.gz
expire_in: 1 month
only:
- main
- master
- develop
- ci-fixes
- tags