From d4334849944bbace872a0b45e3733d04bbe962c0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20W=C3=B6lzer?= <martin@libclapp.org>
Date: Mon, 16 Sep 2024 21:09:29 +0200
Subject: [PATCH] .gitlab-ci/format.yml: introduced formatting pipelines

---
 .gitlab-ci.yml        | 1210 +----------------------------------------
 .gitlab-ci/format.yml |   35 ++
 2 files changed, 38 insertions(+), 1207 deletions(-)
 create mode 100644 .gitlab-ci/format.yml

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 106ee5b2..503ce57f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,1212 +1,8 @@
 stages:
-    - build
-    - test
+    - format
 
 variables:
     GIT_STRATEGY: clone
-    GIT_SUBMODULE_STRATEGY: recursive
 
-.usage_cmake_subdir_template: &usage_cmake_subdir_definition
-    stage: build
-    script:
-        - if [ "${COMPILER}" == "gcc" ]; then export CC="gcc-${COMPILER_VERSION}"; export CXX="g++-${COMPILER_VERSION}"; fi
-        - if [ "${COMPILER}" == "clang" ]; then export CC="clang-${COMPILER_VERSION}"; export CXX="clang++-${COMPILER_VERSION}"; fi
-        - export BUILD_DIR="build_${COMPILER}_${COMPILER_VERSION}_${BUILD_TYPE}"
-        - echo "Using ${CXX} and ${CC} to build ${BUILD_TYPE}, build dir ${BUILD_DIR}"
-        - mkdir "usage/cmake_subdir/${BUILD_DIR}"
-        - cd "usage/cmake_subdir/${BUILD_DIR}"
-        - cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_BUILD_TYPE=${BUILD_TYPE} ..
-        - cmake --build .
-        - LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/local/lib" ./usage_cmake_subdir --help
-
-.usage_cmake_import_template: &usage_cmake_import_definition
-    stage: build
-    script:
-        - if [ "${COMPILER}" == "gcc" ]; then export CC="gcc-${COMPILER_VERSION}"; export CXX="g++-${COMPILER_VERSION}"; fi
-        - if [ "${COMPILER}" == "clang" ]; then export CC="clang-${COMPILER_VERSION}"; export CXX="clang++-${COMPILER_VERSION}"; fi
-        - export BUILD_DIR="build_${COMPILER}_${COMPILER_VERSION}_${BUILD_TYPE}"
-        - echo "Using ${CXX} and ${CC} to build ${BUILD_TYPE}, build dir ${BUILD_DIR}"
-        - mkdir "${BUILD_DIR}"
-        - cd "${BUILD_DIR}"
-        - cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DlibClaPP_PEDANTIC_COMPILER_FLAGS=On -DCMAKE_BUILD_TYPE=${BUILD_TYPE} ..
-        - cmake --build . --target install
-        - mkdir "../usage/cmake_import/${BUILD_DIR}"
-        - cd "../usage/cmake_import/${BUILD_DIR}"
-        - cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_BUILD_TYPE=${BUILD_TYPE} ..
-        - cmake --build .
-        - LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/local/lib" ./usage_cmake_import --help
-
-.usage_cmake_pkgconfig_template: &usage_cmake_pkgconfig_definition
-    stage: build
-    script:
-        - if [ "${COMPILER}" == "gcc" ]; then export CC="gcc-${COMPILER_VERSION}"; export CXX="g++-${COMPILER_VERSION}"; fi
-        - if [ "${COMPILER}" == "clang" ]; then export CC="clang-${COMPILER_VERSION}"; export CXX="clang++-${COMPILER_VERSION}"; fi
-        - export BUILD_DIR="build_${COMPILER}_${COMPILER_VERSION}_${BUILD_TYPE}"
-        - echo "Using ${CXX} and ${CC} to build ${BUILD_TYPE}, build dir ${BUILD_DIR}"
-        - mkdir "${BUILD_DIR}"
-        - cd "${BUILD_DIR}"
-        - cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DlibClaPP_PEDANTIC_COMPILER_FLAGS=On -DCMAKE_BUILD_TYPE=${BUILD_TYPE} ..
-        - cmake --build . --target install
-        - mkdir "../usage/cmake_pkgconfig/${BUILD_DIR}"
-        - cd "../usage/cmake_pkgconfig/${BUILD_DIR}"
-        - cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_BUILD_TYPE=${BUILD_TYPE} ..
-        - cmake --build .
-        - LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/local/lib" ./usage_cmake_pkgconfig --help
-
-.usage_make_pkgconfig_template: &usage_make_pkgconfig_definition
-    stage: build
-    script:
-        - if [ "${COMPILER}" == "gcc" ]; then export CC="gcc-${COMPILER_VERSION}"; export CXX="g++-${COMPILER_VERSION}"; fi
-        - if [ "${COMPILER}" == "clang" ]; then export CC="clang-${COMPILER_VERSION}"; export CXX="clang++-${COMPILER_VERSION}"; fi
-        - export BUILD_DIR="build_${COMPILER}_${COMPILER_VERSION}_${BUILD_TYPE}"
-        - echo "Using ${CXX} and ${CC} to build ${BUILD_TYPE}, build dir ${BUILD_DIR}"
-        - mkdir "${BUILD_DIR}"
-        - cd "${BUILD_DIR}"
-        - cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DlibClaPP_PEDANTIC_COMPILER_FLAGS=On -DCMAKE_BUILD_TYPE=${BUILD_TYPE} ..
-        - cmake --build . --target install
-        - cd ../usage/make_pkgconfig
-        - make
-        - LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/local/lib" ./usage_make_pkgconfig --help
-
-.compile_template: &compile_definition
-    stage: build
-    script:
-        - if [ "${COMPILER}" == "gcc" ]; then export CC="gcc-${COMPILER_VERSION}"; export CXX="g++-${COMPILER_VERSION}"; fi
-        - if [ "${COMPILER}" == "clang" ]; then export CC="clang-${COMPILER_VERSION}"; export CXX="clang++-${COMPILER_VERSION}"; fi
-        - export GENERATOR_WO_SPACES=$(echo $GENERATOR | tr -s ' ' '_')
-        - export BUILD_DIR="build_${COMPILER}_${COMPILER_VERSION}_${GENERATOR_WO_SPACES}_${BUILD_TYPE}"
-        - echo "Using ${CXX} and ${CC} with ${GENERATOR} to build ${BUILD_TYPE}, build dir ${BUILD_DIR}"
-        - SRC_DIR=`pwd`
-        - mkdir "${BUILD_DIR}"
-        - cd "${BUILD_DIR}"
-        - cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DlibClaPP_PEDANTIC_COMPILER_FLAGS=On -DlibClaPP_BUILD_TESTS=On -DlibClaPP_BUILD_EXAMPLES=On -DlibClaPP_BUILD_DOC_CODE=On -DlibClaPP_BUILD_COVERAGE=On -DlibClaPP_SUBMODULE_DEPENDENCIES=On -DCMAKE_BUILD_TYPE=${BUILD_TYPE} ${ADDITIONAL_OPTION} -G "${GENERATOR}" ${SRC_DIR}
-        - cmake --build .
-    artifacts:
-        paths:
-            - build*
-        expire_in: 1 week
-
-.compile_clang_tidy_template: &compile_clang_tidy_definition
-    stage: build
-    script:
-        - if [ "${COMPILER}" == "clang" ]; then export CC="clang-${COMPILER_VERSION}"; export CXX="clang++-${COMPILER_VERSION}"; export CLANG_TIDY="clang-tidy-${COMPILER_VERSION}"; fi
-        - export GENERATOR_WO_SPACES=$(echo $GENERATOR | tr -s ' ' '_')
-        - export BUILD_DIR="build_${CLANG_TIDY}_${GENERATOR_WO_SPACES}_${BUILD_TYPE}"
-        - echo "Using ${CXX}, ${CC}, ${CLANG_TIDY} with ${GENERATOR} to build ${BUILD_TYPE}, build dir ${BUILD_DIR}"
-        - SRC_DIR=`pwd`
-        - mkdir "${BUILD_DIR}"
-        - cd "${BUILD_DIR}"
-        - cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DlibClaPP_PEDANTIC_COMPILER_FLAGS=On -DlibClaPP_CLANG_TIDY_BIN=${CLANG_TIDY} -DlibClaPP_BUILD_DOC_CODE=On -DlibClaPP_BUILD_TESTS=On -DlibClaPP_BUILD_EXAMPLES=On -DlibClaPP_SUBMODULE_DEPENDENCIES=On -DlibClaPP_BUILD_COVERAGE=On -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DlibClaPP_CLANG_TIDY=On -G "${GENERATOR}" ${SRC_DIR}
-        - cmake --build .
-
-.test_gcov_template: &test_gcov_definition
-    stage: test
-    script:
-        - if [ "${COMPILER}" == "gcc" ]; then export GCOV_EXECUTABLE="gcov-${COMPILER_VERSION}"; fi
-        - if [ "${COMPILER}" == "clang" ]; then export GCOV_EXECUTABLE="llvm-cov-${COMPILER_VERSION} gcov"; fi
-        - export GENERATOR_WO_SPACES=$(echo $GENERATOR | tr -s ' ' '_')
-        - export BUILD_DIR="build_${COMPILER}_${COMPILER_VERSION}_${GENERATOR_WO_SPACES}_${BUILD_TYPE}"
-        - echo "Using ${GCOV_EXECUTABLE} for ${BUILD_TYPE}-build with ${GENERATOR}, build dir ${BUILD_DIR}"
-        - find -type d -name 'build_*' | grep -v "${BUILD_DIR}" | xargs rm -rf
-        - cd "${BUILD_DIR}"
-        - ctest -V -R libclapp_tests
-        - gcovr -r ../ -e ../third_party/ -e ../tests/ -e ../examples/ -e ../usage/ -e doc/ -e ../doc/ --gcov-executable="${GCOV_EXECUTABLE}"
-        - ctest -V -E libclapp_tests
-    coverage: '/^TOTAL.*\s+(\d+%)$/'
-
-.test_template: &test_definition
-    stage: test
-    script:
-        - export GENERATOR_WO_SPACES=$(echo $GENERATOR | tr -s ' ' '_')
-        - export BUILD_DIR="build_${COMPILER}_${COMPILER_VERSION}_${GENERATOR_WO_SPACES}_${BUILD_TYPE}"
-        - echo "Using ${CXX} and ${CC} with ${GENERATOR} to build ${BUILD_TYPE}, build dir ${BUILD_DIR}"
-        - cd "${BUILD_DIR}"
-        - ctest -V
-
-clang_format:
-    stage: build
-    script:
-        - find src tests examples usage -iname *.h -o -iname *.cpp -o -iname *.c -o -iname *.hpp | xargs clang-format-11 -i
-        - git diff HEAD
-        - git diff-index --quiet HEAD --
-    tags:
-        - compiler
-        - ubuntu-20.04-amd64
-
-compile_debian_10_amd64:
-    tags:
-        - compiler
-        - debian-10-amd64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [7]
-              GENERATOR: ["Unix Makefiles", "Ninja"]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8]
-              GENERATOR: ["Unix Makefiles", "Ninja"]
-    <<: *compile_definition
-
-test_gcov_debian_10_amd64:
-    tags:
-        - compiler
-        - debian-10-amd64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [7]
-              GENERATOR: ["Unix Makefiles", "Ninja"]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8]
-              GENERATOR: ["Unix Makefiles", "Ninja"]
-    needs:
-        - job: compile_debian_10_amd64
-          artifacts: true
-    <<: *test_gcov_definition
-
-compile_debian_10_arm64:
-    tags:
-        - compiler
-        - debian-10-arm64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [7]
-              GENERATOR: ["Unix Makefiles", "Ninja"]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8]
-              GENERATOR: ["Unix Makefiles", "Ninja"]
-    <<: *compile_definition
-
-test_gcov_debian_10_arm64:
-    tags:
-        - compiler
-        - debian-10-arm64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [7]
-              GENERATOR: ["Unix Makefiles", "Ninja"]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8]
-              GENERATOR: ["Unix Makefiles", "Ninja"]
-    needs:
-        - job: compile_debian_10_arm64
-          artifacts: true
-    <<: *test_gcov_definition
-
-compile_debian_10_armhf:
-    tags:
-        - compiler
-        - debian-10-armhf
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [7]
-              GENERATOR: ["Unix Makefiles", "Ninja"]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8]
-              GENERATOR: ["Unix Makefiles", "Ninja"]
-    <<: *compile_definition
-
-test_gcov_debian_10_armhf:
-    tags:
-        - compiler
-        - debian-10-armhf
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [7]
-              GENERATOR: ["Unix Makefiles", "Ninja"]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8]
-              GENERATOR: ["Unix Makefiles", "Ninja"]
-    needs:
-        - job: compile_debian_10_armhf
-          artifacts: true
-    <<: *test_gcov_definition
-
-compile_debian_11_amd64:
-    tags:
-        - compiler
-        - debian-11-amd64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [9, 11]
-              GENERATOR: ["Unix Makefiles", "Ninja"]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [9, 10]
-              GENERATOR: ["Unix Makefiles", "Ninja"]
-    <<: *compile_definition
-
-test_gcov_debian_11_amd64:
-    tags:
-        - compiler
-        - debian-11-amd64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [9, 11]
-              GENERATOR: ["Unix Makefiles", "Ninja"]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [9, 10]
-              GENERATOR: ["Unix Makefiles", "Ninja"]
-    needs:
-        - job: compile_debian_11_amd64
-          artifacts: true
-    <<: *test_gcov_definition
-
-compile_debian_11_arm64:
-    tags:
-        - compiler
-        - debian-11-arm64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [9, 11]
-              GENERATOR: ["Unix Makefiles", "Ninja"]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [9, 10]
-              GENERATOR: ["Unix Makefiles", "Ninja"]
-    <<: *compile_definition
-
-test_gcov_debian_11_arm64:
-    tags:
-        - compiler
-        - debian-11-arm64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [9, 11]
-              GENERATOR: ["Unix Makefiles", "Ninja"]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [9, 10]
-              GENERATOR: ["Unix Makefiles", "Ninja"]
-    needs:
-        - job: compile_debian_11_arm64
-          artifacts: true
-    <<: *test_gcov_definition
-
-compile_debian_11_armhf:
-    tags:
-        - compiler
-        - debian-11-armhf
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [9, 11]
-              GENERATOR: ["Unix Makefiles", "Ninja"]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [9, 10]
-              GENERATOR: ["Unix Makefiles", "Ninja"]
-    <<: *compile_definition
-
-test_gcov_debian_11_armhf:
-    tags:
-        - compiler
-        - debian-11-armhf
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [9, 11]
-              GENERATOR: ["Unix Makefiles", "Ninja"]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [9, 10]
-              GENERATOR: ["Unix Makefiles", "Ninja"]
-    needs:
-        - job: compile_debian_11_armhf
-          artifacts: true
-    <<: *test_gcov_definition
-
-compile_ubuntu_20.04_amd64:
-    tags:
-        - compiler
-        - ubuntu-20.04-amd64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [7, 8, 9, 10, 11]
-              GENERATOR: ["Unix Makefiles"]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8, 9, 10]
-              GENERATOR: ["Unix Makefiles"]
-    <<: *compile_definition
-
-test_gcov_ubuntu_20.04_amd64:
-    tags:
-        - compiler
-        - ubuntu-20.04-amd64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [7, 8, 9, 10, 11]
-              GENERATOR: ["Unix Makefiles"]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8, 9, 10]
-              GENERATOR: ["Unix Makefiles"]
-    needs:
-        - job: compile_ubuntu_20.04_amd64
-          artifacts: true
-    <<: *test_gcov_definition
-
-compile_ubuntu_20.04_arm64:
-    tags:
-        - compiler
-        - ubuntu-20.04-arm64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [7, 8, 9, 10, 11]
-              GENERATOR: ["Unix Makefiles"]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8, 9, 10]
-              GENERATOR: ["Unix Makefiles"]
-    <<: *compile_definition
-
-test_gcov_ubuntu_20.04_arm64:
-    tags:
-        - compiler
-        - ubuntu-20.04-arm64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [7, 8, 9, 10, 11]
-              GENERATOR: ["Unix Makefiles"]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8, 9, 10]
-              GENERATOR: ["Unix Makefiles"]
-    needs:
-        - job: compile_ubuntu_20.04_arm64
-          artifacts: true
-    <<: *test_gcov_definition
-
-compile_ubuntu_22.04_amd64:
-    tags:
-        - compiler
-        - ubuntu-22.04-amd64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [12, 13, 14]
-              GENERATOR: ["Unix Makefiles"]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [11, 12]
-              GENERATOR: ["Unix Makefiles"]
-    <<: *compile_definition
-
-test_gcov_ubuntu_22.04_amd64:
-    tags:
-        - compiler
-        - ubuntu-22.04-amd64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [12, 13, 14]
-              GENERATOR: ["Unix Makefiles"]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [11, 12]
-              GENERATOR: ["Unix Makefiles"]
-    needs:
-        - job: compile_ubuntu_22.04_amd64
-          artifacts: true
-    <<: *test_gcov_definition
-
-compile_ubuntu_22.04_arm64:
-    tags:
-        - compiler
-        - ubuntu-22.04-arm64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [12, 13, 14]
-              GENERATOR: ["Unix Makefiles"]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [11, 12]
-              GENERATOR: ["Unix Makefiles"]
-    <<: *compile_definition
-
-test_gcov_ubuntu_22.04_arm64:
-    tags:
-        - compiler
-        - ubuntu-22.04-arm64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [12, 13, 14]
-              GENERATOR: ["Unix Makefiles"]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [11, 12]
-              GENERATOR: ["Unix Makefiles"]
-    needs:
-        - job: compile_ubuntu_22.04_arm64
-          artifacts: true
-    <<: *test_gcov_definition
-
-compile_clang_tidy_ubuntu_20.04_amd64:
-    tags:
-        - compiler
-        - ubuntu-20.04-amd64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [10, 11]
-              GENERATOR: ["Unix Makefiles"]
-    <<: *compile_clang_tidy_definition
-
-compile_clang_tidy_ubuntu_22.04_amd64:
-    tags:
-        - compiler
-        - ubuntu-22.04-amd64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [12, 13, 14]
-              GENERATOR: ["Unix Makefiles"]
-    <<: *compile_clang_tidy_definition
-
-usage_cmake_subdir_debian_10_amd64:
-    tags:
-        - compiler
-        - debian-10-amd64
-    parallel:
-        matrix:
-            - BUILD_TYPE: ["Debug", "Release", ""]
-              COMPILER: clang
-              COMPILER_VERSION: [7]
-            - BUILD_TYPE: ["Debug", "Release", ""]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8]
-    <<: *usage_cmake_subdir_definition
-
-usage_cmake_import_debian_10_amd64:
-    tags:
-        - compiler
-        - debian-10-amd64
-    parallel:
-        matrix:
-            - BUILD_TYPE: ["Debug", "Release", ""]
-              COMPILER: clang
-              COMPILER_VERSION: [7]
-            - BUILD_TYPE: ["Debug", "Release", ""]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8]
-    <<: *usage_cmake_import_definition
-
-usage_cmake_pkgconfig_debian_10_amd64:
-    tags:
-        - compiler
-        - debian-10-amd64
-    parallel:
-        matrix:
-            - BUILD_TYPE: ["Debug", "Release", ""]
-              COMPILER: clang
-              COMPILER_VERSION: [7]
-            - BUILD_TYPE: ["Debug", "Release", ""]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8]
-    <<: *usage_cmake_pkgconfig_definition
-
-usage_make_pkgconfig_debian_10_amd64:
-    tags:
-        - compiler
-        - debian-10-amd64
-    parallel:
-        matrix:
-            - BUILD_TYPE: ["Debug", "Release", ""]
-              COMPILER: clang
-              COMPILER_VERSION: [7]
-            - BUILD_TYPE: ["Debug", "Release", ""]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8]
-    <<: *usage_make_pkgconfig_definition
-
-usage_cmake_subdir_debian_10_arm64:
-    tags:
-        - compiler
-        - debian-10-arm64
-    parallel:
-        matrix:
-            - BUILD_TYPE: ["Debug", "Release", ""]
-              COMPILER: clang
-              COMPILER_VERSION: [7]
-            - BUILD_TYPE: ["Debug", "Release", ""]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8]
-    <<: *usage_cmake_subdir_definition
-
-usage_cmake_import_debian_10_arm64:
-    tags:
-        - compiler
-        - debian-10-arm64
-    parallel:
-        matrix:
-            - BUILD_TYPE: ["Debug", "Release", ""]
-              COMPILER: clang
-              COMPILER_VERSION: [7]
-            - BUILD_TYPE: ["Debug", "Release", ""]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8]
-    <<: *usage_cmake_import_definition
-
-usage_cmake_pkgconfig_debian_10_arm64:
-    tags:
-        - compiler
-        - debian-10-arm64
-    parallel:
-        matrix:
-            - BUILD_TYPE: ["Debug", "Release", ""]
-              COMPILER: clang
-              COMPILER_VERSION: [7]
-            - BUILD_TYPE: ["Debug", "Release", ""]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8]
-    <<: *usage_cmake_pkgconfig_definition
-
-usage_make_pkgconfig_debian_10_arm64:
-    tags:
-        - compiler
-        - debian-10-arm64
-    parallel:
-        matrix:
-            - BUILD_TYPE: ["Debug", "Release", ""]
-              COMPILER: clang
-              COMPILER_VERSION: [7]
-            - BUILD_TYPE: ["Debug", "Release", ""]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8]
-    <<: *usage_make_pkgconfig_definition
-
-usage_cmake_subdir_debian_10_armhf:
-    tags:
-        - compiler
-        - debian-10-armhf
-    parallel:
-        matrix:
-            - BUILD_TYPE: ["Debug", "Release", ""]
-              COMPILER: clang
-              COMPILER_VERSION: [7]
-            - BUILD_TYPE: ["Debug", "Release", ""]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8]
-    <<: *usage_cmake_subdir_definition
-
-usage_cmake_import_debian_10_armhf:
-    tags:
-        - compiler
-        - debian-10-armhf
-    parallel:
-        matrix:
-            - BUILD_TYPE: ["Debug", "Release", ""]
-              COMPILER: clang
-              COMPILER_VERSION: [7]
-            - BUILD_TYPE: ["Debug", "Release", ""]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8]
-    <<: *usage_cmake_import_definition
-
-usage_cmake_pkgconfig_debian_10_armhf:
-    tags:
-        - compiler
-        - debian-10-armhf
-    parallel:
-        matrix:
-            - BUILD_TYPE: ["Debug", "Release", ""]
-              COMPILER: clang
-              COMPILER_VERSION: [7]
-            - BUILD_TYPE: ["Debug", "Release", ""]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8]
-    <<: *usage_cmake_pkgconfig_definition
-
-usage_make_pkgconfig_debian_10_armhf:
-    tags:
-        - compiler
-        - debian-10-armhf
-    parallel:
-        matrix:
-            - BUILD_TYPE: ["Debug", "Release", ""]
-              COMPILER: clang
-              COMPILER_VERSION: [7]
-            - BUILD_TYPE: ["Debug", "Release", ""]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8]
-    <<: *usage_make_pkgconfig_definition
-
-usage_cmake_subdir_ubuntu_20.04_amd64:
-    tags:
-        - compiler
-        - ubuntu-20.04-amd64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [7, 8, 9, 10]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8, 9, 10]
-    <<: *usage_cmake_subdir_definition
-
-usage_cmake_import_ubuntu_20.04_amd64:
-    tags:
-        - compiler
-        - ubuntu-20.04-amd64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [7, 8, 9, 10]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8, 9, 10]
-    <<: *usage_cmake_import_definition
-
-usage_cmake_pkgconfig_ubuntu_20.04_amd64:
-    tags:
-        - compiler
-        - ubuntu-20.04-amd64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [7, 8, 9, 10]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8, 9, 10]
-    <<: *usage_cmake_pkgconfig_definition
-
-usage_make_pkgconfig_ubuntu_20.04_amd64:
-    tags:
-        - compiler
-        - ubuntu-20.04-amd64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [7, 8, 9, 10]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8, 9, 10]
-    <<: *usage_make_pkgconfig_definition
-
-usage_cmake_subdir_ubuntu_20.04_arm64:
-    tags:
-        - compiler
-        - ubuntu-20.04-arm64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [7, 8, 9, 10]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8, 9, 10]
-    <<: *usage_cmake_subdir_definition
-
-usage_cmake_import_ubuntu_20.04_arm64:
-    tags:
-        - compiler
-        - ubuntu-20.04-arm64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [7, 8, 9, 10]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8, 9, 10]
-    <<: *usage_cmake_import_definition
-
-usage_cmake_pkgconfig_ubuntu_20.04_arm64:
-    tags:
-        - compiler
-        - ubuntu-20.04-arm64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [7, 8, 9, 10]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8, 9, 10]
-    <<: *usage_cmake_pkgconfig_definition
-
-usage_make_pkgconfig_ubuntu_20.04_arm64:
-    tags:
-        - compiler
-        - ubuntu-20.04-arm64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [7, 8, 9, 10]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [7, 8, 9, 10]
-    <<: *usage_make_pkgconfig_definition
-
-usage_cmake_subdir_ubuntu_22.04_amd64:
-    tags:
-        - compiler
-        - ubuntu-22.04-amd64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [12, 13]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [11]
-    <<: *usage_cmake_subdir_definition
-
-usage_cmake_import_ubuntu_22.04_amd64:
-    tags:
-        - compiler
-        - ubuntu-22.04-amd64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [12, 13]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [11]
-    <<: *usage_cmake_import_definition
-
-usage_cmake_pkgconfig_ubuntu_22.04_amd64:
-    tags:
-        - compiler
-        - ubuntu-22.04-amd64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [12, 13]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [11]
-    <<: *usage_cmake_pkgconfig_definition
-
-usage_make_pkgconfig_ubuntu_22.04_amd64:
-    tags:
-        - compiler
-        - ubuntu-22.04-amd64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [12, 13]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [11]
-    <<: *usage_make_pkgconfig_definition
-
-usage_cmake_subdir_ubuntu_22.04_arm64:
-    tags:
-        - compiler
-        - ubuntu-22.04-arm64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [12, 13]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [11]
-    <<: *usage_cmake_subdir_definition
-
-usage_cmake_import_ubuntu_22.04_arm64:
-    tags:
-        - compiler
-        - ubuntu-22.04-arm64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [12, 13]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [11]
-    <<: *usage_cmake_import_definition
-
-usage_cmake_pkgconfig_ubuntu_22.04_arm64:
-    tags:
-        - compiler
-        - ubuntu-22.04-arm64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [12, 13]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [11]
-    <<: *usage_cmake_pkgconfig_definition
-
-usage_make_pkgconfig_ubuntu_22.04_arm64:
-    tags:
-        - compiler
-        - ubuntu-22.04-arm64
-    parallel:
-        matrix:
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: clang
-              COMPILER_VERSION: [12, 13]
-            - BUILD_TYPE: [Debug, Release]
-              COMPILER: gcc
-              COMPILER_VERSION: [11]
-    <<: *usage_make_pkgconfig_definition
-
-compile_release_address_leak_sanitizer_gcc11_amd64:
-    variables:
-        COMPILER: gcc
-        COMPILER_VERSION: 11
-        BUILD_TYPE: "Release"
-        GENERATOR: "Unix Makefiles"
-        ADDITIONAL_OPTION: "-DlibClaPP_ENABLE_SANITIZER_ADDRESS=On -DlibClaPP_ENABLE_SANITIZER_LEAK=On"
-    tags:
-        - ubuntu-22.04-amd64
-        - compiler
-    <<: *compile_definition
-
-test_release_address_leak_sanitizer_gcc11_amd64:
-    variables:
-        COMPILER: gcc
-        COMPILER_VERSION: 11
-        BUILD_TYPE: "Release"
-        GENERATOR: "Unix Makefiles"
-    tags:
-        - ubuntu-22.04-amd64
-        - compiler
-    needs:
-        - job: compile_release_address_leak_sanitizer_gcc11_amd64
-          artifacts: true
-    <<: *test_definition
-
-compile_debug_address_leak_sanitizer_gcc11_amd64:
-    variables:
-        COMPILER: gcc
-        COMPILER_VERSION: 11
-        BUILD_TYPE: "Release"
-        GENERATOR: "Unix Makefiles"
-        ADDITIONAL_OPTION: "-DlibClaPP_ENABLE_SANITIZER_ADDRESS=On -DlibClaPP_ENABLE_SANITIZER_LEAK=On"
-    tags:
-        - ubuntu-22.04-amd64
-        - compiler
-    <<: *compile_definition
-
-test_debug_address_leak_sanitizer_gcc11_amd64:
-    variables:
-        COMPILER: gcc
-        COMPILER_VERSION: 11
-        BUILD_TYPE: "Release"
-        GENERATOR: "Unix Makefiles"
-    tags:
-        - ubuntu-22.04-amd64
-        - compiler
-    needs:
-        - job: compile_debug_address_leak_sanitizer_gcc11_amd64
-          artifacts: true
-    <<: *test_definition
-
-compile_release_thread_sanitizer_gcc11_amd64:
-    variables:
-        COMPILER: gcc
-        COMPILER_VERSION: 11
-        BUILD_TYPE: "Release"
-        GENERATOR: "Unix Makefiles"
-        ADDITIONAL_OPTION: "-DlibClaPP_ENABLE_SANITIZER_THREAD=On"
-    tags:
-        - ubuntu-22.04-amd64
-        - compiler
-    <<: *compile_definition
-
-test_release_thread_sanitizer_gcc11_amd64:
-    variables:
-        COMPILER: gcc
-        COMPILER_VERSION: 11
-        BUILD_TYPE: "Release"
-        GENERATOR: "Unix Makefiles"
-    tags:
-        - ubuntu-22.04-amd64
-        - compiler
-    needs:
-        - job: compile_release_thread_sanitizer_gcc11_amd64
-          artifacts: true
-    <<: *test_definition
-
-compile_debug_thread_sanitizer_gcc11_amd64:
-    variables:
-        COMPILER: gcc
-        COMPILER_VERSION: 11
-        BUILD_TYPE: "Release"
-        GENERATOR: "Unix Makefiles"
-        ADDITIONAL_OPTION: "-DlibClaPP_ENABLE_SANITIZER_THREAD=On"
-    tags:
-        - ubuntu-22.04-amd64
-        - compiler
-    <<: *compile_definition
-
-test_debug_thread_sanitizer_gcc11_amd64:
-    variables:
-        COMPILER: gcc
-        COMPILER_VERSION: 11
-        BUILD_TYPE: "Release"
-        GENERATOR: "Unix Makefiles"
-    tags:
-        - ubuntu-22.04-amd64
-        - compiler
-    needs:
-        - job: compile_debug_thread_sanitizer_gcc11_amd64
-          artifacts: true
-    <<: *test_definition
-
-compile_release_undefined_behavior_sanitizer_gcc11_amd64:
-    variables:
-        COMPILER: gcc
-        COMPILER_VERSION: 11
-        BUILD_TYPE: "Release"
-        GENERATOR: "Unix Makefiles"
-        ADDITIONAL_OPTION: "-DlibClaPP_ENABLE_SANITIZER_UNDEFINED_BEHAVIOR=On"
-    tags:
-        - ubuntu-22.04-amd64
-        - compiler
-    <<: *compile_definition
-
-test_release_undefined_behavior_sanitizer_gcc11_amd64:
-    variables:
-        COMPILER: gcc
-        COMPILER_VERSION: 11
-        BUILD_TYPE: "Release"
-        GENERATOR: "Unix Makefiles"
-    tags:
-        - ubuntu-22.04-amd64
-        - compiler
-    needs:
-        - job: compile_release_undefined_behavior_sanitizer_gcc11_amd64
-          artifacts: true
-    <<: *test_definition
-
-compile_debug_undefined_behavior_sanitizer_gcc11_amd64:
-    variables:
-        COMPILER: gcc
-        COMPILER_VERSION: 11
-        BUILD_TYPE: "Release"
-        GENERATOR: "Unix Makefiles"
-        ADDITIONAL_OPTION: "-DlibClaPP_ENABLE_SANITIZER_UNDEFINED_BEHAVIOR=On"
-    tags:
-        - ubuntu-22.04-amd64
-        - compiler
-    <<: *compile_definition
-
-test_debug_undefined_behavior_sanitizer_gcc11_amd64:
-    variables:
-        COMPILER: gcc
-        COMPILER_VERSION: 11
-        BUILD_TYPE: "Release"
-        GENERATOR: "Unix Makefiles"
-    tags:
-        - ubuntu-22.04-amd64
-        - compiler
-    needs:
-        - job: compile_debug_undefined_behavior_sanitizer_gcc11_amd64
-          artifacts: true
-    <<: *test_definition
-
-compile_release_address_leak_sanitizer_clang13_amd64:
-    variables:
-        COMPILER: clang
-        COMPILER_VERSION: 13
-        BUILD_TYPE: "Release"
-        GENERATOR: "Unix Makefiles"
-        ADDITIONAL_OPTION: "-DlibClaPP_ENABLE_SANITIZER_ADDRESS=On -DlibClaPP_ENABLE_SANITIZER_LEAK=On"
-    tags:
-        - ubuntu-22.04-amd64
-        - compiler
-    <<: *compile_definition
-
-test_release_address_leak_sanitizer_clang13_amd64:
-    variables:
-        COMPILER: clang
-        COMPILER_VERSION: 13
-        BUILD_TYPE: "Release"
-        GENERATOR: "Unix Makefiles"
-    tags:
-        - ubuntu-22.04-amd64
-        - compiler
-    needs:
-        - job: compile_release_address_leak_sanitizer_clang13_amd64
-          artifacts: true
-    <<: *test_definition
-
-compile_debug_address_leak_sanitizer_clang13_amd64:
-    variables:
-        COMPILER: clang
-        COMPILER_VERSION: 13
-        BUILD_TYPE: "Release"
-        GENERATOR: "Unix Makefiles"
-        ADDITIONAL_OPTION: "-DlibClaPP_ENABLE_SANITIZER_ADDRESS=On -DlibClaPP_ENABLE_SANITIZER_LEAK=On"
-    tags:
-        - ubuntu-22.04-amd64
-        - compiler
-    <<: *compile_definition
-
-test_debug_address_leak_sanitizer_clang13_amd64:
-    variables:
-        COMPILER: clang
-        COMPILER_VERSION: 13
-        BUILD_TYPE: "Release"
-        GENERATOR: "Unix Makefiles"
-    tags:
-        - ubuntu-22.04-amd64
-        - compiler
-    needs:
-        - job: compile_debug_address_leak_sanitizer_clang13_amd64
-          artifacts: true
-    <<: *test_definition
-
-compile_release_undefined_behavior_sanitizer_clang13_amd64:
-    variables:
-        COMPILER: clang
-        COMPILER_VERSION: 13
-        BUILD_TYPE: "Release"
-        GENERATOR: "Unix Makefiles"
-        ADDITIONAL_OPTION: "-DlibClaPP_ENABLE_SANITIZER_UNDEFINED_BEHAVIOR=On"
-    tags:
-        - ubuntu-22.04-amd64
-        - compiler
-    <<: *compile_definition
-
-test_release_undefined_behavior_sanitizer_clang13_amd64:
-    variables:
-        COMPILER: clang
-        COMPILER_VERSION: 13
-        BUILD_TYPE: "Release"
-        GENERATOR: "Unix Makefiles"
-    tags:
-        - ubuntu-22.04-amd64
-        - compiler
-    needs:
-        - job: compile_release_undefined_behavior_sanitizer_clang13_amd64
-          artifacts: true
-    <<: *test_definition
-
-compile_debug_undefined_behavior_sanitizer_clang13_amd64:
-    variables:
-        COMPILER: clang
-        COMPILER_VERSION: 13
-        BUILD_TYPE: "Release"
-        GENERATOR: "Unix Makefiles"
-        ADDITIONAL_OPTION: "-DlibClaPP_ENABLE_SANITIZER_UNDEFINED_BEHAVIOR=On"
-    tags:
-        - ubuntu-22.04-amd64
-        - compiler
-    <<: *compile_definition
-
-test_debug_undefined_behavior_sanitizer_clang13_amd64:
-    variables:
-        COMPILER: clang
-        COMPILER_VERSION: 13
-        BUILD_TYPE: "Release"
-        GENERATOR: "Unix Makefiles"
-    tags:
-        - ubuntu-22.04-amd64
-        - compiler
-    needs:
-        - job: compile_debug_undefined_behavior_sanitizer_clang13_amd64
-          artifacts: true
-    <<: *test_definition
-
-compile_release_thread_sanitizer_clang13_amd64:
-    variables:
-        COMPILER: clang
-        COMPILER_VERSION: 13
-        BUILD_TYPE: "Release"
-        GENERATOR: "Unix Makefiles"
-        ADDITIONAL_OPTION: "-DlibClaPP_ENABLE_SANITIZER_THREAD=On"
-    tags:
-        - ubuntu-22.04-amd64
-        - compiler
-    <<: *compile_definition
-
-test_release_thread_sanitizer_clang13_amd64:
-    variables:
-        COMPILER: clang
-        COMPILER_VERSION: 13
-        BUILD_TYPE: "Release"
-        GENERATOR: "Unix Makefiles"
-    tags:
-        - ubuntu-22.04-amd64
-        - compiler
-    needs:
-        - job: compile_release_thread_sanitizer_clang13_amd64
-          artifacts: true
-    <<: *test_definition
-
-compile_debug_thread_sanitizer_clang13_amd64:
-    variables:
-        COMPILER: clang
-        COMPILER_VERSION: 13
-        BUILD_TYPE: "Release"
-        GENERATOR: "Unix Makefiles"
-        ADDITIONAL_OPTION: "-DlibClaPP_ENABLE_SANITIZER_THREAD=On"
-    tags:
-        - ubuntu-22.04-amd64
-        - compiler
-    <<: *compile_definition
-
-test_debug_thread_sanitizer_clang13_amd64:
-    variables:
-        COMPILER: clang
-        COMPILER_VERSION: 13
-        BUILD_TYPE: "Release"
-        GENERATOR: "Unix Makefiles"
-    tags:
-        - ubuntu-22.04-amd64
-        - compiler
-    needs:
-        - job: compile_debug_thread_sanitizer_clang13_amd64
-          artifacts: true
-    <<: *test_definition
+include:
+  - local: /.gitlab-ci/format.yml
diff --git a/.gitlab-ci/format.yml b/.gitlab-ci/format.yml
new file mode 100644
index 00000000..11f818a6
--- /dev/null
+++ b/.gitlab-ci/format.yml
@@ -0,0 +1,35 @@
+.format-template:
+    stage: format
+    variables:
+        FORMAT_PATCH_FILE: "format.patch"
+    artifacts:
+        when: always
+        expire_in: 1 week
+        paths:
+            - ${FORMAT_PATCH_FILE}
+
+clang-format:
+    extends:
+        - .format-template
+    script:
+        - .ci/format/apply_clang_format.sh --output-patch-file "${FORMAT_PATCH_FILE}"
+    variables:
+        CLANG_COMPILER_VERSION: "11"
+    tags:
+        - ubuntu-22.04-amd64
+
+shfmt:
+    extends:
+        - .format-template
+    script:
+        - .ci/format/apply_shfmt.sh --output-patch-file "${FORMAT_PATCH_FILE}"
+    tags:
+        - ubuntu-24.04-amd64
+
+shfmt-bats:
+    extends:
+        - .format-template
+    script:
+        - .ci/format/apply_shfmt_bats.sh --output-patch-file "${FORMAT_PATCH_FILE}"
+    tags:
+        - ubuntu-24.04-amd64
-- 
GitLab