From e7b63e2ab166f3298322a0e21875bbcd7f1fe503 Mon Sep 17 00:00:00 2001 From: Lars Bilke <lars.bilke@ufz.de> Date: Thu, 15 Jul 2021 11:39:29 +0200 Subject: [PATCH] [cmake,ci] Added test presets. --- CMakePresets.json | 53 ++++++++++++++++----- scripts/ci/extends/template-build-linux.yml | 32 ++++++------- scripts/ci/extends/template-build-win.yml | 21 ++++---- scripts/ci/extends/test-artifacts.yml | 3 +- 4 files changed, 66 insertions(+), 43 deletions(-) diff --git a/CMakePresets.json b/CMakePresets.json index ea12dd6feb8..f803ca12f7c 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -191,6 +191,15 @@ } ], "buildPresets": [ + { + "name": "_win", + "hidden": true, + "condition": { + "type": "equals", + "lhs": "${hostSystemName}", + "rhs": "Windows" + } + }, { "name": "release", "configurePreset": "release" @@ -223,14 +232,17 @@ }, { "name": "msvc-release", + "inherits": "_win", "configurePreset": "msvc-release" }, { "name": "msvc-debug", + "inherits": "_win", "configurePreset": "msvc-debug" }, { "name": "msvc-release-gui", + "inherits": "_win", "configurePreset": "msvc-release-gui", "targets": [ "DataExplorer" @@ -238,40 +250,48 @@ }, { "name": "msvc-debug-gui", + "inherits": "_win", "configurePreset": "msvc-debug-gui", "targets": [ "DataExplorer" ] + }, + { + "name": "ci-simplest", + "configurePreset": "ci-simplest" + }, + { + "name": "ci-no-unity", + "configurePreset": "ci-no-unity" } ], "testPresets": [ { - "name": "_release", + "name": "release", "configurePreset": "release", - "hidden": true, "output": { "outputOnFailure": true - } - }, - { - "name": "release", - "inherits": [ - "_release" - ], + }, "filter": { - "exclude": { - "label": "large" + "include": { + "label": "default" + } + }, + "execution": { + "repeat": { + "mode": "until-pass", + "count": 2 } } }, { "name": "release-large", "inherits": [ - "_release" + "release" ], "filter": { "include": { - "label": "large" + "label": "default|large" } } }, @@ -302,6 +322,13 @@ "inherits": [ "release-large" ] + }, + { + "name": "release-gui", + "configurePreset": "release-gui", + "inherits": [ + "release" + ] } ] } diff --git a/scripts/ci/extends/template-build-linux.yml b/scripts/ci/extends/template-build-linux.yml index 3c97410f1e3..1dca90694b0 100644 --- a/scripts/ci/extends/template-build-linux.yml +++ b/scripts/ci/extends/template-build-linux.yml @@ -6,44 +6,42 @@ before_script: - 'echo "For debugging run: docker run --rm -it -v $CI_BUILDS_DIR:/builds -w=$CI_PROJECT_DIR $CI_JOB_IMAGE"' - - build_dir=${BUILD_DIR:-$CMAKE_PRESET} - - build_dir_full=../build/${build_dir} + - build_dir_full=../build/${CMAKE_PRESET} + - log_file=$build_dir_full/make.output - rm -rf $build_dir_full - - mkdir -p $build_dir_full - - mkdir build + - 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/${build_dir} + - 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 . -B $build_dir_full --preset=$CMAKE_PRESET $CMAKE_ARGS -DOGS_BUILD_PROCESSES=$BUILD_PROCESSES - - cd $build_dir_full + - cmake -S . --preset=$CMAKE_PRESET $CMAKE_ARGS -DOGS_BUILD_PROCESSES=$BUILD_PROCESSES - | if [[ -z "$TARGETS" ]]; then - $BUILD_CMD_PREFIX cmake --build . --target package > >(tee make.output) + $BUILD_CMD_PREFIX cmake --build --preset=$CMAKE_PRESET --target package > >(tee $log_file) - if [ "$BUILD_TESTS" = true ]; then $BUILD_CMD_PREFIX cmake --build . --target tests ; fi + if [ "$BUILD_TESTS" = true ]; then $BUILD_CMD_PREFIX cmake --build --preset=$CMAKE_PRESET --target tests ; fi if [ "$BUILD_CTEST" = true ]; then - - ctest_labels="default" ctest_timeout=15 + preset_postfix="" if [ "$BUILD_CTEST_LARGE" = true ]; then - ctest_labels="large|$ctest_labels" ctest_timeout=90 + preset_postfix="-large" fi if [[ "$OSTYPE" == "darwin"* ]]; then alias date=gdate ; fi - ctest -T Test --no-compress-output -L "$ctest_labels" --repeat until-pass:2 --stop-time `date -d "today + ${ctest_timeout} minutes" +'%H:%M:%S'` - cp Testing/**/Test.xml Tests/ctest.xml - + 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 . --target ${TARGETS} > >(tee make.output) + + $BUILD_CMD_PREFIX cmake --build --preset=$CMAKE_PRESET --target ${TARGETS} > >(tee $log_file) + fi - | if [[ "$CHECK_WARNINGS" = true ]] ; then - if [[ $(cat make.output | grep warning -i | grep -v 'WARNING: no license files found') ]]; then printf 'There were compiler warnings:\n\n'; cat make.output | grep warning -i | grep -v 'WARNING: no license files found'; exit 1; fi + 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 diff --git a/scripts/ci/extends/template-build-win.yml b/scripts/ci/extends/template-build-win.yml index 4c952c14595..c7f8b40dadd 100644 --- a/scripts/ci/extends/template-build-win.yml +++ b/scripts/ci/extends/template-build-win.yml @@ -8,27 +8,24 @@ needs: [meta] variables: script: - - $build_directory = if ($env:BUILD_DIR) { $env:BUILD_DIR } else { $env:CMAKE_PRESET } - - $build_directory_full = "..\build\" + $build_directory + - $build_directory_full = "..\build\" + $env:CMAKE_PRESET + - $log_file = $build_directory_full + "\make.output" - (rm -r -fo $build_directory_full) - cmd /c if not exist $build_directory_full mkdir $build_directory_full - mkdir build # Create symlink https://stackoverflow.com/a/34905638/80480 - - cmd /c mklink /D build\$build_directory $env:CI_PROJECT_DIR\$build_directory_full - - $cmake_cmd = "cmake -S . -B $build_directory_full --preset=$env:CMAKE_PRESET - $env:CMAKE_ARGS + - cmd /c mklink /D build\$env:CMAKE_PRESET $env:CI_PROJECT_DIR\$build_directory_full + - $cmake_cmd = "cmake -S . --preset=$env:CMAKE_PRESET $env:CMAKE_ARGS -DOGS_BUILD_PROCESSES=$env:BUILD_PROCESSES" - $cmake_cmd - Invoke-Expression $cmake_cmd - - cd $build_directory_full - - cmake --build . --target package | Tee-Object -FilePath make.output - - if($env:BUILD_TESTS -eq "true") { cmake --build . --target tests } - - if($env:BUILD_CTEST -eq "true") { cmake --build . --target ctest } - cp Testing/**/Test.xml Tests/ctest.xml + - cmake --build --preset=$env:CMAKE_PRESET --target package | Tee-Object -FilePath $log_file + - if($env:BUILD_TESTS -eq "true") { cmake --build --preset=$env:CMAKE_PRESET --target tests } + - if($env:BUILD_CTEST -eq "true") { ctest --preset=$env:CMAKE_PRESET --output-junit Tests/ctest.xml } - | - if($env:CHECK_WARNINGS -eq "true" -and (cat make.output | Select-String -Pattern ': warning') ) + if($env:CHECK_WARNINGS -eq "true" -and (cat $log_file | Select-String -Pattern ': warning') ) { Write-Output 'There were compiler warnings:\n' - cat make.output | Select-String -Pattern ': warning' + cat $log_file | Select-String -Pattern ': warning' exit 1 } diff --git a/scripts/ci/extends/test-artifacts.yml b/scripts/ci/extends/test-artifacts.yml index 96f2a07bbe8..ffe88323e80 100644 --- a/scripts/ci/extends/test-artifacts.yml +++ b/scripts/ci/extends/test-artifacts.yml @@ -3,7 +3,7 @@ when: always paths: - build/*/logs/*.log - - build/*/Tests/ctest.xml + - build/*/Tests/ctest-junit.xml - build/*/Tests/testrunner.xml - build/*/make.output - build/*/*.zip @@ -12,3 +12,4 @@ reports: junit: - build/*/Tests/testrunner.xml + - build/*/Tests/ctest.xml -- GitLab