variables: GIT_SUBMODULE_STRATEGY: recursive GET_SOURCES_ATTEMPTS: 10 CI_SOURCE_DIR: . CI_BUILD_DIR: _build CI_OUTPUT_DIR: _output CI_CMAKE: /usr/bin/cmake CI_QMAKE5: /usr/bin/qmake .add-ssh-key: before_script: - mkdir -p ~/.ssh - chmod 700 ~/.ssh - eval $(ssh-agent -s) - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - - echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts .use-clang: variables: CXX: clang++-14 CC: clang-14 .use-ninja: variables: CMAKE_GENERATOR: Ninja .qmake-script: variables: QT_SELECT: qt5 script: - > if [ -f "${CI_JOB_NAME}.status" ]; then if [ "$(cat ${CI_JOB_NAME}.status)" == "${CI_COMMIT_SHA}" ]; then echo "=== Commit ${CI_COMMIT_SHORT_SHA} already tested with job ${CI_JOB_NAME} ===" exit 0 fi fi - rm -f ${CI_JOB_NAME}.status - mkdir -p ${CI_BUILD_DIR} - ${CI_QMAKE} -o ${CI_BUILD_DIR}/Makefile ${QMAKE_PRO_FILE} - make -j8 -C ${CI_BUILD_DIR} - echo "${CI_COMMIT_SHA}" > "${CI_JOB_NAME}.status" .cmake-script: extends: .use-ninja script: - > if [ -f "${CI_JOB_NAME}.status" ]; then if [ "$(cat ${CI_JOB_NAME}.status)" == "${CI_COMMIT_SHA}" ]; then echo "=== Commit ${CI_COMMIT_SHORT_SHA} already tested with job ${CI_JOB_NAME} ===" exit 0 fi fi - rm -f ${CI_JOB_NAME}.status - > if [ -n "${CONFIGURE_CMD}" ]; then ${CONFIGURE_CMD} else ${CI_CMAKE} -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=${CI_OUTPUT_DIR} -DCPACK_PACKAGING_INSTALL_PREFIX=/opt/ecs5 -B${CI_BUILD_DIR} -H. fi - > if [ -n "${BUILD_CMD}" ]; then ${BUILD_CMD} else ${CI_CMAKE} --build ${CI_BUILD_DIR} fi - > if [ -z "${CI_SHARED_ENVIRONMENT+x}" ]; then if [ -n "${PACKAGE_CMD}" ]; then ${PACKAGE_CMD} else ${CI_CMAKE} --install ${CI_BUILD_DIR} ${CI_CMAKE} --build ${CI_BUILD_DIR} --target package ${CI_CMAKE} --build ${CI_BUILD_DIR} --target package_source fi fi - echo "${CI_COMMIT_SHA}" > "${CI_JOB_NAME}.status" .scheduled-test: extends: .cmake-script rules: - if: $CI_PIPELINE_SOURCE == "schedule" - if: $CI_PIPELINE_SOURCE == "web" - if: $CI_MERGE_REQUEST_ID when: manual allow_failure: true cache: paths: ['*.status'] before_script: - > if [ -f "${CI_JOB_NAME}.status" ]; then if [ "$(cat ${CI_JOB_NAME}.status)" == "${CI_COMMIT_SHA}" ]; then echo "=== Commit ${CI_COMMIT_SHORT_SHA} already tested with job ${CI_JOB_NAME} ===" exit 0 fi fi - > if [ -n "${UPDATE_CMD}" ]; then ${UPDATE_CMD} fi - > if [ -n "${INSTALL_CMD}" ]; then ${INSTALL_CMD} fi artifacts: paths: - ${CI_BUILD_DIR}/*.gz - ${CI_BUILD_DIR}/*.xz - ${CI_BUILD_DIR}/*.deb - ${CI_BUILD_DIR}/*.changes - ${CI_BUILD_DIR}/*.dsc when: on_success expire_in: 10 days .scheduled-mxe-focal: variables: CI_QMAKE: /usr/lib/mxe/usr/bin/x86_64-w64-mingw32.static-qmake-qt5 CI_CMAKE: /usr/lib/mxe/usr/bin/x86_64-w64-mingw32.static-cmake CI_USE_MXE: 1 extends: .scheduled-test before_script: - !reference [.add-ssh-key, before_script] image: mxe-focal-dev tags: ['docker'] .scheduled-smolensk15: extends: .scheduled-test before_script: - !reference [.add-ssh-key, before_script] image: smolensk15-dev tags: ['docker'] .scheduled-smolensk16: extends: .scheduled-test before_script: - !reference [.add-ssh-key, before_script] image: smolensk16-dev tags: ['docker'] .scheduled-smolensk17: extends: .scheduled-test before_script: - !reference [.add-ssh-key, before_script] image: smolensk17-dev tags: ['docker'] .scheduled-orel212: extends: .scheduled-test before_script: - !reference [.add-ssh-key, before_script] image: orel212-dev tags: ['docker'] .scheduled-bionic: extends: .scheduled-test before_script: - !reference [.add-ssh-key, before_script] image: bionic-dev tags: ['docker'] .scheduled-focal: extends: .scheduled-test before_script: - !reference [.add-ssh-key, before_script] image: focal-dev tags: ['docker'] .scheduled-jammy: extends: .scheduled-test before_script: - !reference [.add-ssh-key, before_script] image: jammy-dev tags: ['docker'] .scheduled-elbrus: extends: .scheduled-test before_script: - !reference [.add-ssh-key, before_script] tags: ['elbrus'] .check-format-sources: extends: .use-ninja image: jammy-dev tags: ['format'] script: - ${CI_CMAKE} -B ${CI_BUILD_DIR} . - ${CI_CMAKE} --build ${CI_BUILD_DIR} --target check-format-sources .myx-cmake-uncrustify-check: extends: .use-ninja image: jammy-dev tags: ['format'] script: - ${CI_CMAKE} -B ${CI_BUILD_DIR} . - ${CI_CMAKE} --build ${CI_BUILD_DIR} --target myx-uncrustify-check .format-sources-check-custom: extends: .use-ninja image: jammy-dev tags: ['format'] script: - > if [ -n "${CHECK_FORMAT_SOURCES_CMD}" ]; then ${CHECK_FORMAT_SOURCES_CMD} fi .qmake-analyze-pvs-studio: image: jammy-dev tags: ['analyze'] script: - ${CI_QMAKE} ${QMAKE_PRO_FILE} - bear -- make -k -j$(nproc) - pvs-studio-analyzer analyze -a 29 -j$(nproc) - plog-converter -a "GA:1,2,3;64:1;OP:1,2;CS:1,2" -t errorfile PVS-Studio.log .qmake-analyze-clang-tidy: extends: .use-clang image: jammy-dev tags: ['analyze'] script: - ${CI_QMAKE} ${QMAKE_PRO_FILE} - bear -- make -k -j$(nproc) - run-clang-tidy-14 -checks=-*,bugprone-*,clang-analyzer-*,misc-*,modernize-*,performance-*,portability-* .qmake-analyze-clazy: extends: .use-clang image: jammy-dev tags: ['analyze'] script: - ${CI_QMAKE} ${QMAKE_PRO_FILE} - bear -- make -k -j$(nproc) - find . -name "*.cpp" -print0 | xargs -0 clazy-standalone --ignore-dirs=/usr -checks=level2 -p compile_commands.json .cmake-analyze-pvs-studio: extends: .use-ninja image: jammy-dev tags: ['analyze'] script: - > if [ -n "${CUSTOM_ANALYZE_PVS}" ]; then ${CUSTOM_ANALYZE_PVS} else ${CI_CMAKE} -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -B ${CI_BUILD_DIR} . pvs-studio-analyzer analyze -a 29 -f ${CI_BUILD_DIR}/compile_commands.json -j -o ${CI_BUILD_DIR}/PVS-Studio.log plog-converter -a "GA:1,2,3;64:1;OP:1,2;CS:1,2" -t errorfile ${CI_BUILD_DIR}/PVS-Studio.log fi .cmake-analyze-clang-tidy: extends: .use-ninja extends: .use-clang image: jammy-dev tags: ['analyze'] script: - > if [ -n "${CUSTOM_ANALYZE_CLANG_TIDY}" ]; then ${CUSTOM_ANALYZE_CLANG_TIDY} else ${CI_CMAKE} -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -B ${CI_BUILD_DIR} . run-clang-tidy-14 -checks=-*,bugprone-*,clang-analyzer-*,misc-*,modernize-*,performance-*,portability-* -p ${CI_BUILD_DIR} fi .cmake-analyze-clazy: extends: .use-ninja extends: .use-clang image: jammy-dev tags: ['analyze'] script: - > if [ -n "${CUSTOM_ANALYZE_CLAZY}" ]; then ${CUSTOM_ANALYZE_CLAZY} else ${CI_CMAKE} -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -B ${CI_BUILD_DIR} . find . -name "*.cpp" -print0 | xargs -0 clazy-standalone --ignore-dirs=/usr -checks=level2 -p ${CI_BUILD_DIR}/compile_commands.json fi .myx-cmake-analyze-pvs-studio: extends: .use-ninja image: jammy-dev tags: ['analyze'] script: - ${CI_CMAKE} -B ${CI_BUILD_DIR} . - ${CI_CMAKE} --build ${CI_BUILD_DIR} --target myx-cmake-analyze-pvs-studio --parallel .myx-cmake-analyze-clang-tidy: extends: .use-ninja extends: .use-clang image: jammy-dev tags: ['analyze'] script: - ${CI_CMAKE} -B ${CI_BUILD_DIR} . - ${CI_CMAKE} --build build --target myx-cmake-analyze-clang-tidy --parallel .myx-cmake-analyze-clazy: extends: .use-ninja image: jammy-dev tags: ['analyze'] script: - ${CI_CMAKE} -B ${CI_BUILD_DIR} . - ${CI_CMAKE} --build ${CI_BUILD_DIR} --target myx-cmake-analyze-clazy --parallel