diff --git a/.gitlab/build.sh b/.gitlab/build.sh new file mode 100755 index 0000000000000000000000000000000000000000..30ff7d85b4c61b0dbbab9bb85ce9f2711221fee0 --- /dev/null +++ b/.gitlab/build.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +set -x + +export LOGNAME=chameleon_${VERSION}.log +echo $LOGNAME +echo build BUILD_OPTIONS $BUILD_OPTIONS | tee -a ${LOGNAME} +echo build VERSION $VERSION | tee -a ${LOGNAME} +ls -l *.log +if [[ -d build-$VERSION ]] +then + cd build-$VERSION + if [[ $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH ]] + then + SCAN="scan-build -plist --intercept-first --exclude CMakeFiles --analyze-headers -o analyzer_reports " + else + SCAN="" + fi + eval '${SCAN}cmake -C ../cmake_modules/gitlab-ci-initial-cache.cmake .. $BUILD_OPTIONS' + eval '${SCAN}ctest --no-compress-output -j 5 -V -T Build | tee ../${LOGNAME}' + make install | tee -a ../${LOGNAME} + rm install/ -r +else + echo "$0: directory build-$VERSION does not exist, exit." + exit 1 +fi diff --git a/.gitlab/common.yml b/.gitlab/common.yml index 996dfa73ba9368555b4edbb735e8ca102c745a2c..f55aeb523a0a82330ad33ed72ed8dd3fa3c488f7 100644 --- a/.gitlab/common.yml +++ b/.gitlab/common.yml @@ -25,21 +25,7 @@ default: stage: build extends: .only-branches script: - - export LOGNAME=chameleon_${VERSION}.log - - echo $LOGNAME - - echo build BUILD_OPTIONS $BUILD_OPTIONS | tee -a ${LOGNAME} - - echo build VERSION $VERSION | tee -a ${LOGNAME} - - ls -l *.log - - (cd build-$VERSION && - scan-build -plist --intercept-first --exclude CMakeFiles --analyze-headers -o analyzer_reports - cmake -C ../cmake_modules/gitlab-ci-initial-cache.cmake .. $BUILD_OPTIONS && - scan-build -plist --intercept-first --exclude CMakeFiles --analyze-headers -o analyzer_reports - ctest --no-compress-output -j 5 -V - -T Build - | tee ../${LOGNAME}) - - (cd build-$VERSION && - make install | tee -a ../${LOGNAME} && - rm install/ -r) + - ./.gitlab/build.sh artifacts: name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" expire_in: 2 days @@ -49,23 +35,7 @@ default: .test_script_template: stage: test script: - - export LOGNAME=chameleon_${VERSION}_${CATEGORY}_${PRECISION} - - echo $LOGNAME - - echo test TESTS_RESTRICTION $TESTS_RESTRICTION | tee -a ${LOGNAME}.log - - echo test VERSION $VERSION | tee -a ${LOGNAME}.log - - echo test CATEGORY $CATEGORY | tee -a ${LOGNAME}.log - - echo test PRECISION $PRECISION | tee -a ${LOGNAME}.log - - ls -l *.log - - (cd build-$VERSION && - eval "ctest --no-compress-output - $TESTS_RESTRICTION - -T Test - --output-junit ../${LOGNAME}.junit - | tee -a ../${LOGNAME}.log") - - gcovr --xml-pretty --exclude-unreachable-branches --print-summary -o ${LOGNAME}.cov --root ${CI_PROJECT_DIR} - - lcov --directory build-$VERSION --capture --output-file ${LOGNAME}.lcov - - cp ${LOGNAME}.junit junit.xml - - cp ${LOGNAME}.cov coverage.xml + - ./.gitlab/test.sh coverage: /^\s*lines:\s*\d+.\d+\%/ artifacts: name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" diff --git a/.gitlab/test.sh b/.gitlab/test.sh new file mode 100755 index 0000000000000000000000000000000000000000..2897800762ec6826873a7e9120b9cfad661bb469 --- /dev/null +++ b/.gitlab/test.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +set -x + +export LOGNAME=chameleon_${VERSION}_${CATEGORY}_${PRECISION} +echo $LOGNAME +echo test TESTS_RESTRICTION $TESTS_RESTRICTION | tee -a ${LOGNAME}.log +echo test VERSION $VERSION | tee -a ${LOGNAME}.log +echo test CATEGORY $CATEGORY | tee -a ${LOGNAME}.log +echo test PRECISION $PRECISION | tee -a ${LOGNAME}.log +ls -l *.log +if [[ -d build-$VERSION ]] +then + cd build-$VERSION + eval "ctest --no-compress-output $TESTS_RESTRICTION -T Test --output-junit ../${LOGNAME}.junit | tee -a ../${LOGNAME}.log" + cd .. $CI_PROJECT_DIR + gcovr --xml-pretty --exclude-unreachable-branches --print-summary -o ${LOGNAME}.cov --root $CI_PROJECT_DIR + lcov --directory build-$VERSION --capture --output-file ${LOGNAME}.lcov + cp ${LOGNAME}.junit junit.xml + cp ${LOGNAME}.cov coverage.xml +else + echo "$0: directory build-$VERSION does not exist, exit." + exit 1 +fi