Raw File
.template-build-linux:
  stage: build
  retry:
    max: 2
    when: runner_system_failure

  before_script:
    - 'echo "For debugging run: docker run --rm -it -v $CI_BUILDS_DIR:/builds -w=$CI_PROJECT_DIR $CI_JOB_IMAGE"'
    - build_dir_full=../build/${CMAKE_PRESET}
    - log_file=$build_dir_full/make.output
    - rm -rf $build_dir_full
    - mkdir -p $build_dir_full build
    - if [[ "$OSTYPE" == "darwin"* ]] ; then readlink_cmd=greadlink; else readlink_cmd=readlink; fi
    - ln -s `$readlink_cmd -f $build_dir_full` build/${CMAKE_PRESET}
    - ([ "${CONAN_USER_HOME}" == "${CI_PROJECT_DIR}/.conan" ]) && conan remove --system-reqs '*'
    - ([[ $BUILD_CTEST_LARGE_ON_MASTER && "${CI_COMMIT_BRANCH}" == "master" && "${CMAKE_ARGS}" == *"USE_PYTHON=ON"* ]]) && export BUILD_CTEST_LARGE=true
  script:
    - cmake -S . --preset=$CMAKE_PRESET -Wno-dev $CMAKE_ARGS -DOGS_BUILD_PROCESSES=$BUILD_PROCESSES
    - |
      if [[ -z "$TARGETS" ]]; then

        $BUILD_CMD_PREFIX cmake --build --preset=$CMAKE_PRESET --target package > >(tee $log_file)

        if [ "$BUILD_TESTS" = true ]; then $BUILD_CMD_PREFIX cmake --build --preset=$CMAKE_PRESET --target tests ; fi

        if [ "$BUILD_CTEST" = true ]; then
          ctest_timeout=15
          preset_postfix=""
          if [ "$BUILD_CTEST_LARGE" = true ]; then
            ctest_timeout=90
            preset_postfix="-large"
          fi

          if [[ "$OSTYPE" == "darwin"* ]]; then alias date=gdate ; fi

          ctest --preset=${CMAKE_PRESET}${preset_postfix} --output-junit Tests/ctest.xml --no-compress-output --stop-time `date -d "today + ${ctest_timeout} minutes" +'%H:%M:%S'`
        fi

      else

        $BUILD_CMD_PREFIX cmake --build --preset=$CMAKE_PRESET --target ${TARGETS} > >(tee $log_file)

      fi
    - |
      if [[ "$CHECK_WARNINGS" = true ]] ; then
        if [[ $(cat $log_file | grep warning -i | grep -v 'WARNING: no license files found') ]]; then printf 'There were compiler warnings:\n\n'; cat $log_file | grep warning -i | grep -v 'WARNING: no license files found'; exit 1; fi
      fi
back to top