From 00a2eac354c0a45c241f3c1ef304a31dd95e9809 Mon Sep 17 00:00:00 2001 From: Johannes Lenzen Date: Tue, 29 Oct 2019 09:30:35 +0100 Subject: [PATCH] Changed the .gitlab-ci.yml structure Beginned with new building system .gitlab-ci.yml can now be generated by the script assemble-gitlab-ci.py. Therefore the .gitlab-ci.yml configuration file can be split into several smaller files --- .gitlab-ci.yml | 206 +++++++++++++++++++++++------ CI/ci-cppcheck.sh | 2 + CI/ci-linux-build.sh | 37 ++++++ CI/ci-linux-prepare.sh | 59 +++++++++ CI/ci-linux-test.sh | 67 ++++++++++ CI/ci-linux.sh | 180 ------------------------- CI/ci-mac-build.sh | 61 +++++++++ CI/ci-mac-prepare.sh | 43 ++++++ CI/ci-mac-test.sh | 65 +++++++++ CI/ci-mac.sh | 182 ------------------------- CI/gitlab-ci/assemble-gitlab-ci.py | 111 ++++++++++++++++ CI/gitlab-ci/ci-master.yml | 37 ++++++ CI/gitlab-ci/linux.yml | 133 +++++++++++++++++++ CI/gitlab-ci/mac.yml | 35 +++++ CI/gitlab-ci/windows.yml | 206 +++++++++++++++++++++++++++++ 15 files changed, 1025 insertions(+), 399 deletions(-) create mode 100755 CI/ci-linux-build.sh create mode 100755 CI/ci-linux-prepare.sh create mode 100755 CI/ci-linux-test.sh delete mode 100755 CI/ci-linux.sh create mode 100755 CI/ci-mac-build.sh create mode 100755 CI/ci-mac-prepare.sh create mode 100755 CI/ci-mac-test.sh delete mode 100755 CI/ci-mac.sh create mode 100755 CI/gitlab-ci/assemble-gitlab-ci.py create mode 100644 CI/gitlab-ci/ci-master.yml create mode 100644 CI/gitlab-ci/linux.yml create mode 100644 CI/gitlab-ci/mac.yml create mode 100644 CI/gitlab-ci/windows.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 21314106..8fd21723 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,38 +1,175 @@ +############################################################# +# # +# This is an auto generated file. Do not make # +# changes to this file. They possible will be overriden. # +# # +# To make persistent changes changes files in # +# ./CI/gitlab-ci/ ... # +# and regenerate this file with the configuration tool # +# # +############################################################# + stages: - build + - test - deploy -gcc-c++11: +variables: + GIT_SUBMODULE_STRATEGY: recursive + +# ----------------- +# Linux tasks +# ----------------- + +cppcheck: stage: build - script: "CI/ci-linux.sh gcc C++11" + script: "CI/ci-cppcheck.sh" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + artifacts: + paths: + - cppcheck.log + +gcc-c++11-test-debug: + stage: test + script: "CI/ci-linux-test.sh gcc C++11 debug" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + + +gcc-c++11-test-release: + stage: test + script: "CI/ci-linux-test.sh gcc C++11 release" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + +gcc-c++11-build-debug: + stage: build + script: "CI/ci-linux-build.sh gcc C++11 debug" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + artifacts: + paths: + - build-debug-gcc-cpp11-Vector-Checks/ + +gcc-c++11-build-release: + stage: build + script: "CI/ci-linux-build.sh gcc C++11 release" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + artifacts: + paths: + - build-release-gcc-cpp11-Vector-Checks/ + +clang-c++11-test-debug: + stage: test + script: "CI/ci-linux-test.sh clang C++11 debug" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + +clang-c++11-test-release: + stage: test + script: "CI/ci-linux-test.sh clang C++11 release" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + +clang-c++11-build-debug: + stage: build + script: "CI/ci-linux-build.sh clang C++11 debug" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + artifacts: + paths: + - build-debug-clang-cpp11-Vector-Checks/ + +clang-c++11-build-release: + stage: build + script: "CI/ci-linux-build.sh clang C++11 release" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + artifacts: + paths: + - build-release-clang-cpp11-Vector-Checks/ + +gcc-c++14-test-debug: + stage: test + script: "CI/ci-linux-test.sh gcc C++14 debug" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + +gcc-c++14-test-release: + stage: test + script: "CI/ci-linux-test.sh gcc C++14 release" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + +gcc-c++14-build-debug: + stage: build + script: "CI/ci-linux-build.sh gcc C++14 debug" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + artifacts: + paths: + - build-debug-gcc-cpp14-Vector-Checks/ + +gcc-c++14-build-release: + stage: build + script: "CI/ci-linux-build.sh gcc C++14 release" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + artifacts: + paths: + - build-release-gcc-cpp14-Vector-Checks/ + +clang-c++14-test-debug: + stage: test + script: "CI/ci-linux-test.sh clang C++14 debug" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + +clang-c++14-test-release: + stage: test + script: "CI/ci-linux-test.sh clang C++14 release" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + +clang-c++14-build-debug: + stage: build + script: "CI/ci-linux-build.sh clang C++14 debug" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + artifacts: + paths: + - build-debug-clang-cpp14-Vector-Checks/ + +clang-c++14-build-release: + stage: build + script: "CI/ci-linux-build.sh clang C++14 release" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + artifacts: + paths: + - build-release-clang-cpp14-Vector-Checks/ + +# ----------------- +# Apple tasks +# ----------------- + +macos-cpp11-debug: + stage: build + script: "CI/ci-mac-build.sh C++11 debug ; CI/ci-mac-test.sh C++11 debug" tags: - - Linux - - stretch + - Apple -clang-c++11: +macos-cpp14-debug: stage: build - script: "CI/ci-linux.sh clang C++11" + script: "CI/ci-mac-build.sh C++14 debug ; CI/ci-mac-test.sh C++14 debug" tags: - - Linux - - stretch + - Apple -gcc-c++14: +macos-cpp11-release: stage: build - script: "CI/ci-linux.sh gcc C++14" - tags: - - Linux - - stretch - -clang-c++14: - stage: build - script: "CI/ci-linux.sh clang C++14" - tags: - - Linux - - stretch - -macos-cpp11: - stage: build - script: "CI/ci-mac.sh C++11" + script: "CI/ci-mac-build.sh C++11 release ; CI/ci-mac-test.sh C++11 release" tags: - Apple artifacts: @@ -40,9 +177,9 @@ macos-cpp11: - build-release-cpp11/*.dmg - build-release-cpp11/*.tar.gz -macos-cpp14: +macos-cpp14-release: stage: build - script: "CI/ci-mac.sh C++14" + script: "CI/ci-mac-build.sh C++14 release ; CI/ci-mac-test.sh C++14 release" tags: - Apple artifacts: @@ -50,16 +187,10 @@ macos-cpp14: - build-release-cpp14/*.dmg - build-release-cpp14/*.tar.gz -cppcheck: - stage: build - script: "CI/ci-cppcheck.sh" - tags: - - Linux - - stretch - artifacts: - paths: - - cppcheck.log - +# ----------------- +# Windows tasks +# ----------------- + VS2017-64-bit-shared-apps: stage: build variables: @@ -262,7 +393,7 @@ VS2015-32-bit-static-no-apps: artifacts: paths: - build-release/*.exe - + Doc-publish: stage: deploy only: @@ -286,3 +417,4 @@ Sources: - OpenMesh*.tar.bz2 - OpenMesh*.tar.gz + diff --git a/CI/ci-cppcheck.sh b/CI/ci-cppcheck.sh index 914376c2..fbd1c67c 100755 --- a/CI/ci-cppcheck.sh +++ b/CI/ci-cppcheck.sh @@ -3,6 +3,8 @@ # Exit script on any error set -e +CPU_COUNT=$(grep -c processor /proc/cpuinfo) + #===================================== # Color Settings: #===================================== diff --git a/CI/ci-linux-build.sh b/CI/ci-linux-build.sh new file mode 100755 index 00000000..a08d973f --- /dev/null +++ b/CI/ci-linux-build.sh @@ -0,0 +1,37 @@ +#!/bin/bash +source CI/ci-linux-prepare.sh + +echo -e "${OUTPUT}" +echo "" +echo "======================================================================" +echo "Basic configuration details:" +echo "======================================================================" +echo -e "${NC}" + +echo "Compiler: $COMPILER" +echo "Options: $OPTIONS" +echo "Language: $LANGUAGE" +echo "Make Options: $OPTIONS" +echo "BuildPath: $BUILDPATH" +echo "Path: $PATH" +echo "Language: $LANGUAGE" + +echo -e "${OUTPUT}" +echo "" +echo "======================================================================" +echo "Building $BUILD_TYPE version with vectorchecks enabled" +echo "======================================================================" +echo -e "${NC}" + +if [ ! -d build-$BUILD_TYPE_L-$BUILDPATH-Vector-Checks ]; then + mkdir build-$BUILD_TYPE_L-$BUILDPATH-Vector-Checks +fi + +cd build-$BUILD_TYPE_L-$BUILDPATH-Vector-Checks + +cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DOPENMESH_BUILD_UNIT_TESTS=TRUE -DSTL_VECTOR_CHECKS=ON $OPTIONS ../ + +#build it +make $MAKE_OPTIONS + +cd .. \ No newline at end of file diff --git a/CI/ci-linux-prepare.sh b/CI/ci-linux-prepare.sh new file mode 100755 index 00000000..893b06b5 --- /dev/null +++ b/CI/ci-linux-prepare.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +COMPILER=$1 +LANGUAGE=$2 +BUILD_TYPE=$3 + +# Exit script on any error +set -e + +OPTIONS="" +MAKE_OPTIONS="" +BUILDPATH="" + +# set GTEST path +OPTIONS="-DGTEST_ROOT=/usr/src/gtest/" + +if [ "$COMPILER" == "gcc" ]; then + echo "Building with GCC"; + BUILDPATH="gcc" + + # without icecc: no options required + OPTIONS="$OPTIONS -DCMAKE_CXX_COMPILER=/usr/bin/g++ -DCMAKE_C_COMPILER=/usr/bin/gcc" + MAKE_OPTIONS="-j16" + export ICECC_CXX=/usr/bin/g++ ; export ICECC_CC=/usr/bin/gcc + +elif [ "$COMPILER" == "clang" ]; then + + OPTIONS="$OPTIONS -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang" + echo "Building with CLANG"; + BUILDPATH="clang" +fi + +if [ "$LANGUAGE" == "C++98" ]; then + echo "Building with C++98"; + BUILDPATH="$BUILDPATH-cpp98" +elif [ "$LANGUAGE" == "C++11" ]; then + echo "Building with C++11"; + OPTIONS="$OPTIONS -DCMAKE_CXX_FLAGS='-std=c++11' " + BUILDPATH="$BUILDPATH-cpp11" +elif [ "$LANGUAGE" == "C++14" ]; then + echo "Building with C++14"; + OPTIONS="$OPTIONS -DCMAKE_CXX_FLAGS='-std=c++14' " + BUILDPATH="$BUILDPATH-cpp14" +fi + +#===================================== +# Color Settings: +#===================================== +NC='\033[0m' +OUTPUT='\033[0;32m' +WARNING='\033[0;93m' + +if [ "$BUILD_TYPE" == "release" ]; then + export BUILD_TYPE=Release + export BUILD_TYPE_L=release +else + export BUILD_TYPE=Debug + export BUILD_TYPE_L=debug +fi \ No newline at end of file diff --git a/CI/ci-linux-test.sh b/CI/ci-linux-test.sh new file mode 100755 index 00000000..938605e6 --- /dev/null +++ b/CI/ci-linux-test.sh @@ -0,0 +1,67 @@ +#!/bin/bash +source CI/ci-linux-prepare.sh + +echo -e "${OUTPUT}" +echo "" +echo "======================================================================" +echo "Basic configuration details:" +echo "======================================================================" +echo -e "${NC}" + +echo "Compiler: $COMPILER" +echo "Options: $OPTIONS" +echo "Language: $LANGUAGE" +echo "Make Options: $OPTIONS" +echo "BuildPath: $BUILDPATH" +echo "Path: $PATH" +echo "Language: $LANGUAGE" + +echo -e "${OUTPUT}" +echo "" +echo "======================================================================" +echo "Building $BUILD_TYPE version unittests" +echo "======================================================================" +echo -e "${NC}" + +if [ ! -d build-$BUILD_TYPE_L-$BUILDPATH-Vector-Checks ]; then + mkdir build-$BUILD_TYPE_L-$BUILDPATH-Vector-Checks +fi + +cd build-$BUILD_TYPE_L-$BUILDPATH-Vector-Checks + +#build the unit tests +make $MAKE_OPTIONS unittests + +echo -e "${OUTPUT}" +echo "" +echo "======================================================================" +echo "Running unittests $BUILD_TYPE version with vectorchecks enabled" +echo "======================================================================" +echo -e "${NC}" + +cd Unittests + +#execute tests +./unittests --gtest_color=yes --gtest_output=xml + +echo -e "${OUTPUT}" +echo "" +echo "======================================================================" +echo "Running unittests $BUILD_TYPE version with custom vector type" +echo "======================================================================" +echo -e "${NC}" + +./unittests_customvec --gtest_color=yes --gtest_output=xml + +echo -e "${OUTPUT}" +echo "" +echo "======================================================================" +echo "Running unittests $BUILD_TYPE version with double vector type" +echo "======================================================================" +echo -e "${NC}" + +#execute tests +./unittests_doublevec --gtest_color=yes --gtest_output=xml + +cd .. +cd .. \ No newline at end of file diff --git a/CI/ci-linux.sh b/CI/ci-linux.sh deleted file mode 100755 index 468a7872..00000000 --- a/CI/ci-linux.sh +++ /dev/null @@ -1,180 +0,0 @@ -#!/bin/bash - -COMPILER=$1 -LANGUAGE=$2 - -# Exit script on any error -set -e - -OPTIONS="" -MAKE_OPTIONS="" -BUILDPATH="" - -# set GTEST path -OPTIONS="-DGTEST_ROOT=~/sw/gtest-1.8.0/" - -if [ "$COMPILER" == "gcc" ]; then - echo "Building with GCC"; - BUILDPATH="gcc" - - # without icecc: no options required - OPTIONS="$OPTIONS -DCMAKE_CXX_COMPILER=/usr/lib/icecc/bin/g++ -DCMAKE_C_COMPILER=/usr/lib/icecc/bin/gcc" - MAKE_OPTIONS="-j16" - export ICECC_CXX=/usr/bin/g++ ; export ICECC_CC=/usr/bin/gcc - -elif [ "$COMPILER" == "clang" ]; then - - OPTIONS="$OPTIONS -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang" - echo "Building with CLANG"; - BUILDPATH="clang" -fi - -if [ "$LANGUAGE" == "C++98" ]; then - echo "Building with C++98"; - BUILDPATH="$BUILDPATH-cpp98" -elif [ "$LANGUAGE" == "C++11" ]; then - echo "Building with C++11"; - OPTIONS="$OPTIONS -DCMAKE_CXX_FLAGS='-std=c++11' " - BUILDPATH="$BUILDPATH-cpp11" -elif [ "$LANGUAGE" == "C++14" ]; then - echo "Building with C++14"; - OPTIONS="$OPTIONS -DCMAKE_CXX_FLAGS='-std=c++14' " - BUILDPATH="$BUILDPATH-cpp14" -fi - -#===================================== -# Color Settings: -#===================================== -NC='\033[0m' -OUTPUT='\033[0;32m' -WARNING='\033[0;93m' - - -echo -e "${OUTPUT}" -echo "" -echo "======================================================================" -echo "Basic configuration details:" -echo "======================================================================" -echo -e "${NC}" - -echo "Compiler: $COMPILER" -echo "Options: $OPTIONS" -echo "Language: $LANGUAGE" -echo "Make Options: $OPTIONS" -echo "BuildPath: $BUILDPATH" -echo "Path: $PATH" -echo "Language: $LANGUAGE" - -echo -e "${OUTPUT}" -echo "" -echo "======================================================================" -echo "Building Release version with vectorchecks enabled" -echo "======================================================================" -echo -e "${NC}" - - -if [ ! -d build-release-$BUILDPATH-Vector-Checks ]; then - mkdir build-release-$BUILDPATH-Vector-Checks -fi - -cd build-release-$BUILDPATH-Vector-Checks - -cmake -DCMAKE_BUILD_TYPE=Release -DOPENMESH_BUILD_UNIT_TESTS=TRUE -DSTL_VECTOR_CHECKS=ON $OPTIONS ../ - -#build it -make $MAKE_OPTIONS - -#build the unit tests -make $MAKE_OPTIONS unittests - -cd Unittests - -echo -e "${OUTPUT}" -echo "" -echo "======================================================================" -echo "Running unittests Release version with vectorchecks enabled" -echo "======================================================================" -echo -e "${NC}" - -#execute tests -./unittests --gtest_color=yes --gtest_output=xml - -echo -e "${OUTPUT}" -echo "" -echo "======================================================================" -echo "Running unittests Release version with custom vector type" -echo "======================================================================" -echo -e "${NC}" - -#execute tests -./unittests_customvec --gtest_color=yes --gtest_output=xml - -echo -e "${OUTPUT}" -echo "" -echo "======================================================================" -echo "Running unittests Release version with double vector type" -echo "======================================================================" -echo -e "${NC}" - -#execute tests -./unittests_doublevec --gtest_color=yes --gtest_output=xml - -cd .. -cd .. - -echo -e "${OUTPUT}" -echo "" -echo "======================================================================" -echo "Building Debug version with vectorchecks enabled" -echo "======================================================================" -echo -e "${NC}" - - -if [ ! -d build-debug-$BUILDPATH-Vector-Checks ]; then - mkdir build-debug-$BUILDPATH-Vector-Checks -fi - -cd build-debug-$BUILDPATH-Vector-Checks - -cmake -DCMAKE_BUILD_TYPE=Debug -DOPENMESH_BUILD_UNIT_TESTS=TRUE -DSTL_VECTOR_CHECKS=ON $OPTIONS ../ - -#build it -make $MAKE_OPTIONS - -#build the unit tests -make $MAKE_OPTIONS unittests - -cd Unittests - -echo -e "${OUTPUT}" -echo "" -echo "======================================================================" -echo "Running unittests Debug version with vectorchecks enabled" -echo "======================================================================" -echo -e "${NC}" - -#execute tests -./unittests --gtest_color=yes --gtest_output=xml - -echo -e "${OUTPUT}" -echo "" -echo "======================================================================" -echo "Running unittests Debug version with custom vector type" -echo "======================================================================" -echo -e "${NC}" - -#execute tests -./unittests_customvec --gtest_color=yes --gtest_output=xml - -echo -e "${OUTPUT}" -echo "" -echo "======================================================================" -echo "Running unittests Debug version with double vector type" -echo "======================================================================" -echo -e "${NC}" - -#execute tests -./unittests_doublevec --gtest_color=yes --gtest_output=xml - -cd .. -cd .. diff --git a/CI/ci-mac-build.sh b/CI/ci-mac-build.sh new file mode 100755 index 00000000..44773c39 --- /dev/null +++ b/CI/ci-mac-build.sh @@ -0,0 +1,61 @@ +#!/bin/bash +source CI/ci-mac-prepare.sh + +echo -e "${OUTPUT}" +echo "" +echo "======================================================================" +echo "Basic configuration details:" +echo "======================================================================" +echo -e "${NC}" + +echo "Options: $OPTIONS" +echo "BuildPath: $BUILDPATH" +echo "Path: $PATH" +echo "Language: $LANGUAGE" + +echo -e "${OUTPUT}" +echo "" +echo "======================================================================" +echo "Building $BUILD_TYPE version with vectorchecks enabled" +echo "======================================================================" +echo -e "${NC}" + + +if [ ! -d build-$BUILD_TYPE_L-$BUILDPATH-Vector-Checks ]; then + mkdir build-$BUILD_TYPE_L-$BUILDPATH-Vector-Checks +fi + +cd build-$BUILD_TYPE_L-$BUILDPATH-Vector-Checks + +cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DOPENMESH_BUILD_UNIT_TESTS=TRUE -DSTL_VECTOR_CHECKS=ON $OPTIONS ../ + +#build it +make + +cd .. + +if [ "$BUILD_TYPE_L" == "release" ]; then + + echo -e "${OUTPUT}" + echo "" + echo "======================================================================" + echo "Package creation (DMG and tarball)" + echo "======================================================================" + echo -e "${NC}" + + + if [ ! -d build-release-$BUILDPATH ]; then + mkdir build-release-$BUILDPATH + fi + + cd build-release-$BUILDPATH + + cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_APPS=OFF -DCPACK_BINARY_DRAGNDROP=ON $OPTIONS ../ + + #build it + make + make package + + cd .. + +fi \ No newline at end of file diff --git a/CI/ci-mac-prepare.sh b/CI/ci-mac-prepare.sh new file mode 100755 index 00000000..985171c6 --- /dev/null +++ b/CI/ci-mac-prepare.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +#Exit on any error +set -e + +LANGUAGE=$1 +BUILD_TYPE=$2 + +PATH=$PATH:/opt/local/bin +export PATH + +OPTIONS="" + +# set GTEST path +OPTIONS="$OPTIONS -DGTEST_ROOT=~/sw/gtest-1.7.0/" + +if [ "$LANGUAGE" == "C++98" ]; then + echo "Building with C++98"; + BUILDPATH="cpp98" +elif [ "$LANGUAGE" == "C++11" ]; then + echo "Building with C++11"; + OPTIONS="$OPTIONS -DCMAKE_CXX_FLAGS='-std=c++11' " + BUILDPATH="cpp11" +elif [ "$LANGUAGE" == "C++14" ]; then + echo "Building with C++14"; + OPTIONS="$OPTIONS -DCMAKE_CXX_FLAGS='-std=c++14' " + BUILDPATH="cpp14" +fi + +#===================================== +# Color Settings: +#===================================== +NC='\033[0m' +OUTPUT='\033[0;32m' +WARNING='\033[0;93m' + +if [ "$BUILD_TYPE" == "release" ]; then + export BUILD_TYPE=Release + export BUILD_TYPE_L=release +else + export BUILD_TYPE=Debug + export BUILD_TYPE_L=debug +fi diff --git a/CI/ci-mac-test.sh b/CI/ci-mac-test.sh new file mode 100755 index 00000000..de25ba39 --- /dev/null +++ b/CI/ci-mac-test.sh @@ -0,0 +1,65 @@ +#!/bin/bash +source CI/ci-mac-prepare.sh + +echo -e "${OUTPUT}" +echo "" +echo "======================================================================" +echo "Basic configuration details:" +echo "======================================================================" +echo -e "${NC}" + +echo "Options: $OPTIONS" +echo "BuildPath: $BUILDPATH" +echo "Path: $PATH" +echo "Language: $LANGUAGE" + +echo -e "${OUTPUT}" +echo "" +echo "======================================================================" +echo "Building $BUILD_TYPE version unittests" +echo "======================================================================" +echo -e "${NC}" + + +if [ ! -d build-$BUILD_TYPE_L-$BUILDPATH-Vector-Checks ]; then + mkdir build-$BUILD_TYPE_L-$BUILDPATH-Vector-Checks +fi + +cd build-$BUILD_TYPE_L-$BUILDPATH-Vector-Checks + +#build the unit tests +make unittests + +echo -e "${OUTPUT}" +echo "" +echo "======================================================================" +echo "Running unittests $BUILD_TYPE version with vectorchecks enabled" +echo "======================================================================" +echo -e "${NC}" + +cd Unittests + +#execute tests +./unittests --gtest_color=yes --gtest_output=xml + +echo -e "${OUTPUT}" +echo "" +echo "======================================================================" +echo "Running unittests $BUILD_TYPE version with minimal vector type" +echo "======================================================================" +echo -e "${NC}" + +./unittests_customvec --gtest_color=yes --gtest_output=xml + +echo -e "${OUTPUT}" +echo "" +echo "======================================================================" +echo "Running unittests $BUILD_TYPE version with double vector type" +echo "======================================================================" +echo -e "${NC}" + +#execute tests +./unittests_doublevec --gtest_color=yes --gtest_output=xml + +cd .. +cd .. \ No newline at end of file diff --git a/CI/ci-mac.sh b/CI/ci-mac.sh deleted file mode 100755 index 493214b2..00000000 --- a/CI/ci-mac.sh +++ /dev/null @@ -1,182 +0,0 @@ -#!/bin/bash - -#Exit on any error -set -e - -LANGUAGE=$1 - - -PATH=$PATH:/opt/local/bin -export PATH - -OPTIONS="" - -# set GTEST path -OPTIONS="$OPTIONS -DGTEST_ROOT=~/sw/gtest-1.7.0/" - -if [ "$LANGUAGE" == "C++98" ]; then - echo "Building with C++98"; - BUILDPATH="cpp98" -elif [ "$LANGUAGE" == "C++11" ]; then - echo "Building with C++11"; - OPTIONS="$OPTIONS -DCMAKE_CXX_FLAGS='-std=c++11' " - BUILDPATH="cpp11" -elif [ "$LANGUAGE" == "C++14" ]; then - echo "Building with C++14"; - OPTIONS="$OPTIONS -DCMAKE_CXX_FLAGS='-std=c++14' " - BUILDPATH="cpp14" -fi - -#===================================== -# Color Settings: -#===================================== -NC='\033[0m' -OUTPUT='\033[0;32m' -WARNING='\033[0;93m' - - -echo -e "${OUTPUT}" -echo "" -echo "======================================================================" -echo "Basic configuration details:" -echo "======================================================================" -echo -e "${NC}" - -echo "Options: $OPTIONS" -echo "BuildPath: $BUILDPATH" -echo "Path: $PATH" -echo "Language: $LANGUAGE" - -echo -e "${OUTPUT}" -echo "" -echo "======================================================================" -echo "Building Release version with vectorchecks enabled" -echo "======================================================================" -echo -e "${NC}" - - -if [ ! -d build-release-$BUILDPATH-Vector-Checks ]; then - mkdir build-release-$BUILDPATH-Vector-Checks -fi - -cd build-release-$BUILDPATH-Vector-Checks - -cmake -DCMAKE_BUILD_TYPE=Release -DOPENMESH_BUILD_UNIT_TESTS=TRUE -DSTL_VECTOR_CHECKS=ON $OPTIONS ../ - -#build it -make - -#build the unit tests -make unittests - -cd Unittests - -echo -e "${OUTPUT}" -echo "" -echo "======================================================================" -echo "Running unittests Release version with vectorchecks enabled" -echo "======================================================================" -echo -e "${NC}" - -#execute tests -./unittests --gtest_color=yes --gtest_output=xml - -echo -e "${OUTPUT}" -echo "" -echo "======================================================================" -echo "Running unittests Release version with minimal vector type" -echo "======================================================================" -echo -e "${NC}" - -#execute tests -./unittests_customvec --gtest_color=yes --gtest_output=xml - -echo -e "${OUTPUT}" -echo "" -echo "======================================================================" -echo "Running unittests Release version with double vector type" -echo "======================================================================" -echo -e "${NC}" - -#execute tests -./unittests_doublevec --gtest_color=yes --gtest_output=xml - -cd .. -cd .. - -echo -e "${OUTPUT}" -echo "" -echo "======================================================================" -echo "Building Debug version with vectorchecks enabled" -echo "======================================================================" -echo -e "${NC}" - - -if [ ! -d build-debug-$BUILDPATH-Vector-Checks ]; then - mkdir build-debug-$BUILDPATH-Vector-Checks -fi - -cd build-debug-$BUILDPATH-Vector-Checks - -cmake -DCMAKE_BUILD_TYPE=Debug -DOPENMESH_BUILD_UNIT_TESTS=TRUE -DSTL_VECTOR_CHECKS=ON $OPTIONS ../ - -#build it -make - -#build the unit tests -make unittests - -cd Unittests - -echo -e "${OUTPUT}" -echo "" -echo "======================================================================" -echo "Running unittests Debug version with vectorchecks enabled" -echo "======================================================================" -echo -e "${NC}" - -#execute tests -./unittests --gtest_color=yes --gtest_output=xml - -echo -e "${OUTPUT}" -echo "" -echo "======================================================================" -echo "Running unittests Debug version with minimal vector type" -echo "======================================================================" -echo -e "${NC}" - -#execute tests -./unittests_customvec --gtest_color=yes --gtest_output=xml - -echo -e "${OUTPUT}" -echo "" -echo "======================================================================" -echo "Running unittests Debug version with double vector type" -echo "======================================================================" -echo -e "${NC}" - -#execute tests -./unittests_doublevec --gtest_color=yes --gtest_output=xml - -cd .. -cd .. - -echo -e "${OUTPUT}" -echo "" -echo "======================================================================" -echo "Package creation (DMG and tarball)" -echo "======================================================================" -echo -e "${NC}" - - -if [ ! -d build-release-$BUILDPATH ]; then - mkdir build-release-$BUILDPATH -fi - -cd build-release-$BUILDPATH - -cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_APPS=OFF -DCPACK_BINARY_DRAGNDROP=ON $OPTIONS ../ - -#build it -make -make package diff --git a/CI/gitlab-ci/assemble-gitlab-ci.py b/CI/gitlab-ci/assemble-gitlab-ci.py new file mode 100755 index 00000000..a7fb97de --- /dev/null +++ b/CI/gitlab-ci/assemble-gitlab-ci.py @@ -0,0 +1,111 @@ +#!/usr/bin/python3 + +import sys, os, re + +# Script for automated gitlab-ci creation +# Assembles the gitlab ci from master template file: +master_file = 'ci-master.yml' +# Lines in the master file are copied to the resulting +# assemblied gitlab ci file +target_file = '../../.gitlab-ci.yml' +# Lines containing the String {xxx} are interpreted +# as import statement. Therefore the file xxx is imported +# into that line. +error_on_path_redirection = True +# Notice that xxx can not contain path redirections +# like .. and / + + +# Prefix to prepend to master file +autogenerated_notice = """############################################################# +# # +# This is an auto generated file. Do not make # +# changes to this file. They possible will be overriden. # +# # +# To make persistent changes changes files in # +# ./CI/gitlab-ci/ ... # +# and regenerate this file with the configuration tool # +# # +############################################################# + +""" + + +# Checks if an import filename is valid - free of path redirections +def isValidImportFilename(filenameToImport): + if not error_on_path_redirection: + return True + else: + filterRegex = r"(\/|\\|\.\.+)" + filtered = re.sub(filterRegex, '', filenameToImport) + return filenameToImport == filtered + +# Returns the directory to work on +def findCIAssemblyDirectory(): + pathname = os.path.dirname(sys.argv[0]) + return os.path.abspath(pathname) + +# Returns file content as string +def readFile(filename): + file = open(filename, "r") + content = file.read() + file.close() + return content + +# Assembles the file in memory and returns file content as string +def assembleTarget(master, depth=3): + if depth < 0: + raise "Max depth reached. Possible circular import?" + + master_content = readFile(master) + regex_import_stmt = r"^\ *\{([^\}\n]+)\}\ *$" + regex_import_comp = re.compile(regex_import_stmt) + master_content_list = master_content.splitlines() + + # Walk through file looking for import statements + cur_index = 0 + while cur_index < len(master_content_list): + cur_line = master_content_list[cur_index] + match = regex_import_comp.match(cur_line) + + if match: + importFile = match.groups()[0] + if importFile: + # Found import statement + print("Importing file: "+importFile) + + if not isValidImportFilename(importFile): + raise "Invalid filename "+importFile+ ". Do not include path redirections" + + import_content = assembleTarget(importFile, depth=depth-1) + import_content_list = import_content.splitlines() + master_content_list.pop(cur_index) + for new_line in reversed(import_content_list): + master_content_list.insert(cur_index, new_line) + + cur_index += 1 + + # Assemble result + master_content = ''.join(str(e)+'\n' for e in master_content_list) + return master_content + +# Main function +def main(): + print("Starting config assembly") + os.chdir(findCIAssemblyDirectory()) + target_content = autogenerated_notice + target_content += assembleTarget(master_file) + print("Writing config to file "+target_file) + + target_file_handle = open(target_file, "w") + target_file_handle.write(target_content) + target_file_handle.write("\n") + target_file_handle.flush() + target_file_handle.close() + + print("Finished.") + + +# Execute main function +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/CI/gitlab-ci/ci-master.yml b/CI/gitlab-ci/ci-master.yml new file mode 100644 index 00000000..341375c4 --- /dev/null +++ b/CI/gitlab-ci/ci-master.yml @@ -0,0 +1,37 @@ +stages: + - build + - test + - deploy + +variables: + GIT_SUBMODULE_STRATEGY: recursive + +{linux.yml} + +{mac.yml} + +{windows.yml} + +Doc-publish: + stage: deploy + only: + - master + script: "CI/ci-doc.sh" + tags: + - Linux + - stretch + +Sources: + stage: deploy + only: + - master + script: "CI/ci-source.sh" + tags: + - Linux + - stretch + artifacts: + paths: + - OpenMesh*.zip + - OpenMesh*.tar.bz2 + - OpenMesh*.tar.gz + diff --git a/CI/gitlab-ci/linux.yml b/CI/gitlab-ci/linux.yml new file mode 100644 index 00000000..3073aa0e --- /dev/null +++ b/CI/gitlab-ci/linux.yml @@ -0,0 +1,133 @@ +# ----------------- +# Linux tasks +# ----------------- + +cppcheck: + stage: build + script: "CI/ci-cppcheck.sh" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + artifacts: + paths: + - cppcheck.log + +gcc-c++11-test-debug: + stage: test + script: "CI/ci-linux-test.sh gcc C++11 debug" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + + +gcc-c++11-test-release: + stage: test + script: "CI/ci-linux-test.sh gcc C++11 release" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + +gcc-c++11-build-debug: + stage: build + script: "CI/ci-linux-build.sh gcc C++11 debug" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + artifacts: + paths: + - build-debug-gcc-cpp11-Vector-Checks/ + +gcc-c++11-build-release: + stage: build + script: "CI/ci-linux-build.sh gcc C++11 release" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + artifacts: + paths: + - build-release-gcc-cpp11-Vector-Checks/ + +clang-c++11-test-debug: + stage: test + script: "CI/ci-linux-test.sh clang C++11 debug" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + +clang-c++11-test-release: + stage: test + script: "CI/ci-linux-test.sh clang C++11 release" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + +clang-c++11-build-debug: + stage: build + script: "CI/ci-linux-build.sh clang C++11 debug" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + artifacts: + paths: + - build-debug-clang-cpp11-Vector-Checks/ + +clang-c++11-build-release: + stage: build + script: "CI/ci-linux-build.sh clang C++11 release" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + artifacts: + paths: + - build-release-clang-cpp11-Vector-Checks/ + +gcc-c++14-test-debug: + stage: test + script: "CI/ci-linux-test.sh gcc C++14 debug" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + +gcc-c++14-test-release: + stage: test + script: "CI/ci-linux-test.sh gcc C++14 release" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + +gcc-c++14-build-debug: + stage: build + script: "CI/ci-linux-build.sh gcc C++14 debug" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + artifacts: + paths: + - build-debug-gcc-cpp14-Vector-Checks/ + +gcc-c++14-build-release: + stage: build + script: "CI/ci-linux-build.sh gcc C++14 release" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + artifacts: + paths: + - build-release-gcc-cpp14-Vector-Checks/ + +clang-c++14-test-debug: + stage: test + script: "CI/ci-linux-test.sh clang C++14 debug" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + +clang-c++14-test-release: + stage: test + script: "CI/ci-linux-test.sh clang C++14 release" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + +clang-c++14-build-debug: + stage: build + script: "CI/ci-linux-build.sh clang C++14 debug" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + artifacts: + paths: + - build-debug-clang-cpp14-Vector-Checks/ + +clang-c++14-build-release: + stage: build + script: "CI/ci-linux-build.sh clang C++14 release" + image: graphics.rwth-aachen.de:4567/moebius/docker/docker-openmesh-container + tags: [Docker] + artifacts: + paths: + - build-release-clang-cpp14-Vector-Checks/ \ No newline at end of file diff --git a/CI/gitlab-ci/mac.yml b/CI/gitlab-ci/mac.yml new file mode 100644 index 00000000..b385eeeb --- /dev/null +++ b/CI/gitlab-ci/mac.yml @@ -0,0 +1,35 @@ +# ----------------- +# Apple tasks +# ----------------- + +macos-cpp11-debug: + stage: build + script: "CI/ci-mac-build.sh C++11 debug ; CI/ci-mac-test.sh C++11 debug" + tags: + - Apple + +macos-cpp14-debug: + stage: build + script: "CI/ci-mac-build.sh C++14 debug ; CI/ci-mac-test.sh C++14 debug" + tags: + - Apple + +macos-cpp11-release: + stage: build + script: "CI/ci-mac-build.sh C++11 release ; CI/ci-mac-test.sh C++11 release" + tags: + - Apple + artifacts: + paths: + - build-release-cpp11/*.dmg + - build-release-cpp11/*.tar.gz + +macos-cpp14-release: + stage: build + script: "CI/ci-mac-build.sh C++14 release ; CI/ci-mac-test.sh C++14 release" + tags: + - Apple + artifacts: + paths: + - build-release-cpp14/*.dmg + - build-release-cpp14/*.tar.gz diff --git a/CI/gitlab-ci/windows.yml b/CI/gitlab-ci/windows.yml new file mode 100644 index 00000000..d8ebdf03 --- /dev/null +++ b/CI/gitlab-ci/windows.yml @@ -0,0 +1,206 @@ +# ----------------- +# Windows tasks +# ----------------- + +VS2017-64-bit-shared-apps: + stage: build + variables: + BUILD_PLATFORM: "VS2017" + ARCHITECTURE: "x64" + SHARED: "TRUE" + APPS: "ON" + script: "CI\\Windows.bat" + tags: + - VS2017 + - Qt5101 + artifacts: + paths: + - build-release/*.exe + +VS2017-64-bit-static-apps: + stage: build + variables: + BUILD_PLATFORM: "VS2017" + ARCHITECTURE: "x64" + SHARED: "FALSE" + APPS: "ON" + script: "CI\\Windows.bat" + tags: + - VS2017 + - Qt5101 + artifacts: + paths: + - build-release/*.exe + + +VS2017-64-bit-shared-no-apps: + stage: build + variables: + BUILD_PLATFORM: "VS2017" + ARCHITECTURE: "x64" + SHARED: "TRUE" + APPS: "OFF" + script: "CI\\Windows.bat" + tags: + - VS2017 + artifacts: + paths: + - build-release/*.exe + + +VS2017-32-bit-shared-no-apps: + stage: build + variables: + BUILD_PLATFORM: "VS2017" + ARCHITECTURE: "x32" + SHARED: "TRUE" + APPS: "OFF" + script: "CI\\Windows.bat" + tags: + - VS2017 + artifacts: + paths: + - build-release/*.exe + + +VS2017-64-bit-static-no-apps: + stage: build + variables: + BUILD_PLATFORM: "VS2017" + ARCHITECTURE: "x64" + SHARED: "FALSE" + APPS: "OFF" + script: "CI\\Windows.bat" + tags: + - VS2017 + artifacts: + paths: + - build-release/*.exe + + +VS2017-32-bit-static-no-apps: + stage: build + variables: + BUILD_PLATFORM: "VS2017" + ARCHITECTURE: "x32" + SHARED: "FALSE" + APPS: "OFF" + script: "CI\\Windows.bat" + tags: + - VS2017 + artifacts: + paths: + - build-release/*.exe + +VS2015-64-bit-shared-apps: + stage: build + variables: + BUILD_PLATFORM: "VS2015" + ARCHITECTURE: "x64" + SHARED: "TRUE" + APPS: "ON" + script: "CI\\Windows.bat" + tags: + - VS2015 + artifacts: + paths: + - build-release/*.exe + + +VS2015-64-bit-shared-no-apps: + stage: build + variables: + BUILD_PLATFORM: "VS2015" + ARCHITECTURE: "x64" + SHARED: "TRUE" + APPS: "OFF" + script: "CI\\Windows.bat" + tags: + - VS2015 + artifacts: + paths: + - build-release/*.exe + +VS2015-32-bit-shared-apps: + stage: build + variables: + BUILD_PLATFORM: "VS2015" + ARCHITECTURE: "x32" + SHARED: "TRUE" + APPS: "ON" + script: "CI\\Windows.bat" + tags: + - VS2015 + artifacts: + paths: + - build-release/*.exe + +VS2015-32-bit-shared-no-apps: + stage: build + variables: + BUILD_PLATFORM: "VS2015" + ARCHITECTURE: "x32" + SHARED: "TRUE" + APPS: "OFF" + script: "CI\\Windows.bat" + tags: + - VS2015 + artifacts: + paths: + - build-release/*.exe + +VS2015-64-bit-static-apps: + stage: build + variables: + BUILD_PLATFORM: "VS2015" + ARCHITECTURE: "x64" + SHARED: "FALSE" + APPS: "ON" + script: "CI\\Windows.bat" + tags: + - VS2015 + artifacts: + paths: + - build-release/*.exe + +VS2015-64-bit-static-no-apps: + stage: build + variables: + BUILD_PLATFORM: "VS2015" + ARCHITECTURE: "x64" + SHARED: "FALSE" + APPS: "OFF" + script: "CI\\Windows.bat" + tags: + - VS2015 + artifacts: + paths: + - build-release/*.exe + +VS2015-32-bit-static-apps: + stage: build + variables: + BUILD_PLATFORM: "VS2015" + ARCHITECTURE: "x32" + SHARED: "FALSE" + APPS: "ON" + script: "CI\\Windows.bat" + tags: + - VS2015 + artifacts: + paths: + - build-release/*.exe + +VS2015-32-bit-static-no-apps: + stage: build + variables: + BUILD_PLATFORM: "VS2015" + ARCHITECTURE: "x32" + SHARED: "FALSE" + APPS: "OFF" + script: "CI\\Windows.bat" + tags: + - VS2015 + artifacts: + paths: + - build-release/*.exe