stages: - build - repoupload - deploy variables: CMAKE_INTERPROCEDURAL_OPTIMIZATION: 0 VERBOSE: 1 DIAGNOSTIC: 1 PACK_ICUDATA: 0 PACK_GALERA: 0 CMAKE_XTRA: -DCMAKE_UNITY_BUILD=1 # ==================== .helper generic build ====================== .build: stage: build interruptible: true rules: - if: $CI_MERGE_REQUEST_ID when: manual - if: $CI_MERGE_REQUEST_ID == null when: manual needs: [ ] tags: - docker image: manticoresearch/external_toolchain:vcpkg331_20250114 variables: CACHEB: "../cache" arch: x86_64 boost: boost_nov22 sysroot: roots_nov22 script: - mkdir build && cd build - cmake -DPACK=1 -DBUILD_TAG=$RELEASE_TAG $CMAKE_XTRA .. - cmake --build . --target package cache: key: release_$DISTR$arch paths: - cache artifacts: paths: - build/manticore*deb - build/manticore-*.tar.gz - build/manticore-*.zip - build/manticore-*.exe when: on_success expire_in: 12 hrs .build_rhel: extends: [ .build ] variables: boost: boost_rhel_feb17 before_script: - export CMAKE_TOOLCHAIN_FILE=$(pwd)/dist/build_dockers/cross/linux.cmake - ln -s $(pwd) /builds_manticoresearch_dev_usr_src_debug_manticore_component_src_0_0 - cd /builds_manticoresearch_dev_usr_src_debug_manticore_component_src_0_0 artifacts: paths: - build/manticore*rpm # ==================== .helper generic and specific collect of built artifacts ====================== .collect_job: variables: GIT_STRATEGY: fetch stage: repoupload interruptible: true tags: - repo rules: - if: $CI_MERGE_REQUEST_ID when: manual allow_failure: true - if: $CI_COMMIT_BRANCH =~ /^manticore-.*$/ when: manual - if: $CI_COMMIT_BRANCH == "maintenance-release" when: manual - if: $CI_COMMIT_BRANCH == "master" when: on_success .collect_deb: extends: [ .collect_job ] script: - wget https://raw.githubusercontent.com/manticoresoftware/repo_scripts/main/upload_repo_deb - chmod +x upload_repo_deb - MAKE_BUNDLE=1 /bin/bash ./upload_repo_deb .collect_rpm: extends: [ .collect_job ] script: - wget https://raw.githubusercontent.com/manticoresoftware/repo_scripts/main/upload_repo_rpm - chmod +x upload_repo_rpm - MAKE_BUNDLE=1 /bin/bash ./upload_repo_rpm .collect_arc: extends: [ .collect_job ] script: - wget https://raw.githubusercontent.com/manticoresoftware/repo_scripts/main/upload_repo_arc - chmod +x upload_repo_arc - /bin/bash ./upload_repo_arc # ==================== MacOS ====================== macos: extends: [ .build ] before_script: - export CMAKE_TOOLCHAIN_FILE=$(pwd)/dist/build_dockers/cross/osx.cmake variables: DISTR: macos macos_arm: extends: [ macos ] variables: arch: arm64 .collect_macos: extends: [ .collect_arc ] needs: [ macos, macos_arm ] # ==================== Windows ====================== windows: extends: [ .build ] variables: arch: x64 sysroot: roots_mysql83_jan17 boost: boost_80 DISTR: windows # windows build with native clang flavour .windows_cl: extends: [ windows ] before_script: - export CMAKE_TOOLCHAIN_FILE=$(pwd)/dist/build_dockers/cross/windows.cmake .collect_windows: extends: [ .collect_arc ] needs: [ windows ] # ==================== Centos 7 ====================== rhel7: extends: [ .build_rhel ] variables: DISTR: rhel7 rhel7_arm: extends: [ rhel7 ] variables: arch: aarch64 .collect_rhel7: extends: [ .collect_rpm ] needs: [ rhel7, rhel7_arm ] variables: DISTRO: 7 # ==================== Centos 8 ====================== rhel8: extends: [ .build_rhel ] variables: DISTR: rhel8 rhel8_arm: extends: [ rhel8 ] variables: arch: aarch64 .collect_rhel8: extends: [ .collect_rpm ] needs: [ rhel8, rhel8_arm ] variables: DISTRO: 8 # ==================== RHEL 9 ====================== rhel9: extends: [ .build_rhel ] variables: DISTR: rhel9 rhel9_arm: extends: [ rhel9 ] variables: arch: aarch64 .collect_rhel9: extends: [ .collect_rpm ] needs: [ rhel9, rhel9_arm ] variables: DISTRO: 9 # ==================== Debian-based ====================== # ==================== Ubuntu Bionic ====================== bionic: extends: [ .build ] before_script: - export CMAKE_TOOLCHAIN_FILE=$(pwd)/dist/build_dockers/cross/linux.cmake variables: DISTR: bionic bionic_arm: extends: [ bionic ] variables: arch: aarch64 .collect_bionic: extends: [ .collect_deb ] needs: [ bionic, bionic_arm ] variables: DISTRO: bionic # ==================== Ubuntu Focal ====================== focal: extends: [ .build ] before_script: - export CMAKE_TOOLCHAIN_FILE=$(pwd)/dist/build_dockers/cross/linux.cmake variables: DISTR: focal focal_arm: extends: [ focal ] variables: arch: aarch64 .collect_focal: extends: [ .collect_deb ] needs: [ focal, focal_arm ] variables: DISTRO: focal # ==================== Debian Buster ====================== buster: extends: [ .build ] before_script: - export CMAKE_TOOLCHAIN_FILE=$(pwd)/dist/build_dockers/cross/linux.cmake variables: DISTR: buster buster_arm: extends: [ buster ] variables: arch: aarch64 .collect_buster: extends: [ .collect_deb ] needs: [ buster, buster_arm ] variables: DISTRO: buster # ==================== Debian Bullseye ====================== bullseye: extends: [ .build ] before_script: - export CMAKE_TOOLCHAIN_FILE=$(pwd)/dist/build_dockers/cross/linux.cmake variables: DISTR: bullseye bullseye_arm: extends: [ bullseye ] variables: arch: aarch64 .collect_bullseye: extends: [ .collect_deb ] needs: [ bullseye, bullseye_arm ] variables: DISTRO: bullseye # ==================== Ubuntu Jammy ====================== jammy: extends: [ .build ] before_script: - export CMAKE_TOOLCHAIN_FILE=$(pwd)/dist/build_dockers/cross/linux.cmake variables: DISTR: jammy jammy_arm: extends: [ jammy ] variables: arch: aarch64 .collect_jammy: extends: [ .collect_deb ] needs: [ jammy, jammy_arm ] variables: DISTRO: jammy # ==================== Debian Bookworm ====================== bookworm: extends: [ .build ] before_script: - export CMAKE_TOOLCHAIN_FILE=$(pwd)/dist/build_dockers/cross/linux.cmake variables: DISTR: bookworm bookworm_arm: extends: [ bookworm ] variables: arch: aarch64 .collect_bookworm: extends: [ .collect_deb ] needs: [ bookworm, bookworm_arm ] variables: DISTRO: bookworm # ==================== Docker image ====================== .nsis_release: stage: deploy rules: trigger: include: dist/nsis-release.yml needs: - job: .collect_windows .build_docker: stage: deploy needs: - job: .collect_focal optional: true interruptible: true variables: GIT_STRATEGY: none rules: - if: $CI_MERGE_REQUEST_ID when: manual allow_failure: true - if: $CI_COMMIT_BRANCH =~ /^manticore-.*$/ when: manual - if: $CI_COMMIT_BRANCH == "maintenance-release" when: manual - if: $CI_COMMIT_BRANCH == "master" when: on_success tags: - dev-host script: - echo "Build docker image" - /bin/bash dist/dockerhub_deploy.sh