stages:
- canary
- build
.build:
retry:
max: 2
variables:
CCACHE_DIR: "${CI_PROJECT_DIR}/ccache"
DISTRO: "latest"
image: votca/buildenv:${DISTRO}
stage: build
artifacts:
paths:
- ${CI_PROJECT_DIR}/votca
when: always
dependencies: []
cache:
paths:
- ccache/
script:
- ccache -z
- j="$(grep -c processor /proc/cpuinfo 2>/dev/null)" || j=0; ((j++))
- git branch commit_of_build_${CI_BUILD_ID} ${CI_COMMIT_SHA}
- git clone https://github.com/votca/votca
- pushd votca
- if [[ ${CI_COMMIT_TAG} = v[12].[0-9]* ]]; then
git checkout -b ${CI_COMMIT_TAG} ${CI_COMMIT_TAG};
elif [[ ( ${CI_COMMIT_REF_NAME} =~ ^for/([^/]*)/.* || ${CI_COMMIT_REF_NAME} =~ ^(stable)$ ) && ${BASH_REMATCH[1]} != master ]]; then
git checkout -b ${BASH_REMATCH[1]} origin/${BASH_REMATCH[1]};
fi
- git submodule update --recursive --init
- git -C ${CI_PROJECT_NAME} fetch ${CI_PROJECT_DIR} commit_of_build_${CI_BUILD_ID}
- git -C ${CI_PROJECT_DIR} branch -d commit_of_build_${CI_BUILD_ID}
- git -C ${CI_PROJECT_NAME} checkout -f ${CI_COMMIT_SHA}
- mkdir -p build
- pushd build
- cmake .. -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_TESTING=ON -DBUILD_CSGAPPS=ON -DBUILD_XTP=ON -DBUILD_CSG_MANUAL=ON -DENABLE_WERROR=ON
-DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DENABLE_REGRESSION_TESTING=${REGRESSION_TESTING:-ON}
-DBUILD_OWN_GROMACS=${BUILD_GROMACS} ${BUILD_GROMACS:+-DENABLE_WARNING_FLAGS=OFF -DENABLE_WERROR=OFF}
-DMODULE_BUILD=${MODULE_BUILD} ${MODULE_BUILD:+-DCMAKE_INSTALL_PREFIX=/home/votca/votca.install}
${MINIMAL:+-DCMAKE_DISABLE_FIND_PACKAGE_HDF5=ON -DCMAKE_DISABLE_FIND_PACKAGE_FFTW3=ON
-DCMAKE_DISABLE_FIND_PACKAGE_MKL=ON -DBUILD_MANPAGES=OFF -DWITH_GMX=OFF -DBUILD_XTP=OFF -DENABLE_REGRESSION_TESTING=OFF}
- cmake --build . -- -j2
- ctest --output-on-failure
- test -z "${MODULE_BUILD}" && DESTDIR=${PWD}/install cmake --build . --target install && rm -rf ${PWD}/install/usr && rmdir ${PWD}/install
- sudo cmake --build . --target install
- if [[ ${CLANG_FORMAT} ]]; then cmake --build . --target format && git -C ${CI_PROJECT_DIR}/votca/${CI_PROJECT_NAME} diff --exit-code; fi
- ccache -s
Debug GCC Format:
stage: canary
variables:
CC: "gcc"
CXX: "g++"
CMAKE_BUILD_TYPE: "Debug"
REGRESSION_TESTING: "OFF"
CLANG_FORMAT: "yes"
extends: .build
Debug GCC:
variables:
CC: "gcc"
CXX: "g++"
CMAKE_BUILD_TYPE: "Debug"
extends: .build
None GCC:
variables:
CC: "gcc"
CXX: "g++"
CMAKE_BUILD_TYPE: ""
extends: .build
None Clang:
variables:
CC: "clang"
CXX: "clang++"
CMAKE_BUILD_TYPE: ""
extends: .build
Debug Clang:
variables:
CC: "clang"
CXX: "clang++"
CMAKE_BUILD_TYPE: "Debug"
extends: .build
Release GCC:
variables:
CC: "gcc"
CXX: "g++"
CMAKE_BUILD_TYPE: "Release"
extends: .build
Release Clang:
variables:
CC: "clang"
CXX: "clang++"
CMAKE_BUILD_TYPE: "Release"
extends: .build
Debug GCC Ubuntu:
variables:
CC: "gcc"
CXX: "g++"
CMAKE_BUILD_TYPE: "Debug"
DISTRO: "ubuntu"
REGRESSION_TESTING: "OFF"
extends: .build
Debug Clang Ubuntu:
variables:
CC: "clang"
CXX: "clang++"
CMAKE_BUILD_TYPE: "Debug"
DISTRO: "ubuntu"
REGRESSION_TESTING: "OFF"
extends: .build
Release GCC Ubuntu:
variables:
CC: "gcc"
CXX: "g++"
CMAKE_BUILD_TYPE: "Release"
DISTRO: "ubuntu"
REGRESSION_TESTING: "OFF"
extends: .build
Release Clang Ubuntu:
variables:
CC: "clang"
CXX: "clang++"
CMAKE_BUILD_TYPE: "Release"
DISTRO: "ubuntu"
REGRESSION_TESTING: "OFF"
extends: .build
Debug GCC Rawhide:
variables:
CC: "gcc"
CXX: "g++"
CMAKE_BUILD_TYPE: "Debug"
DISTRO: "fedora_rawhide"
extends: .build
allow_failure: true
Debug Clang Rawhide:
variables:
CC: "clang"
CXX: "clang++"
CMAKE_BUILD_TYPE: "Debug"
DISTRO: "fedora_rawhide"
extends: .build
allow_failure: true
Release GCC Rawhide:
variables:
CC: "gcc"
CXX: "g++"
CMAKE_BUILD_TYPE: "Release"
DISTRO: "fedora_rawhide"
extends: .build
allow_failure: true
Release Clang Rawhide:
variables:
CC: "clang"
CXX: "clang++"
CMAKE_BUILD_TYPE: "Release"
DISTRO: "fedora_rawhide"
extends: .build
allow_failure: true
Release GCC Minimal:
variables:
CC: "gcc"
CXX: "g++"
CMAKE_BUILD_TYPE: "Release"
MINIMAL: "yes"
DISTRO: "fedora_nogmx"
extends: .build
Release Clang Minimal:
variables:
CC: "clang"
CXX: "clang++"
CMAKE_BUILD_TYPE: "Release"
MINIMAL: "yes"
DISTRO: "fedora_nogmx"
extends: .build
Release GCC Module:
variables:
CC: "gcc"
CXX: "g++"
CMAKE_BUILD_TYPE: "Release"
MODULE_BUILD: "yes"
extends: .build
Release GCC GMX2019:
variables:
CC: "gcc"
CXX: "g++"
CMAKE_BUILD_TYPE: "Release"
DISTRO: "fedora_gmx2019"
extends: .build
Release Clang GMX2019:
variables:
CC: "clang"
CXX: "clang++"
CMAKE_BUILD_TYPE: "Release"
DISTRO: "fedora_gmx2019"
extends: .build
Release GCC GMX2019D:
variables:
CC: "gcc"
CXX: "g++"
CMAKE_BUILD_TYPE: "Release"
DISTRO: "fedora_gmx2019_d"
extends: .build
Release Clang GMX2019D:
variables:
CC: "clang"
CXX: "clang++"
CMAKE_BUILD_TYPE: "Release"
DISTRO: "fedora_gmx2019_d"
extends: .build
Release GCC GMX2020:
variables:
CC: "gcc"
CXX: "g++"
CMAKE_BUILD_TYPE: "Release"
DISTRO: "fedora_gmx2020"
REGRESSION_TESTING: "OFF"
extends: .build
Release Clang GMX2020:
variables:
CC: "clang"
CXX: "clang++"
CMAKE_BUILD_TYPE: "Release"
DISTRO: "fedora_gmx2020"
REGRESSION_TESTING: "OFF"
extends: .build
Release GCC GMX2020D:
variables:
CC: "gcc"
CXX: "g++"
CMAKE_BUILD_TYPE: "Release"
DISTRO: "fedora_gmx2020_d"
REGRESSION_TESTING: "OFF"
extends: .build
Release Clang GMX2020D:
variables:
CC: "clang"
CXX: "clang++"
CMAKE_BUILD_TYPE: "Release"
DISTRO: "fedora_gmx2020_d"
REGRESSION_TESTING: "OFF"
extends: .build
Release GCC GMX9999:
variables:
CC: "gcc"
CXX: "g++"
CMAKE_BUILD_TYPE: "Release"
DISTRO: "fedora_gmx9999"
REGRESSION_TESTING: "OFF"
extends: .build
allow_failure: true
Release Clang GMX9999:
variables:
CC: "clang"
CXX: "clang++"
CMAKE_BUILD_TYPE: "Release"
DISTRO: "fedora_gmx9999"
REGRESSION_TESTING: "OFF"
extends: .build
allow_failure: true
Release GCC GMX9999D:
variables:
CC: "gcc"
CXX: "g++"
CMAKE_BUILD_TYPE: "Release"
DISTRO: "fedora_gmx9999_d"
REGRESSION_TESTING: "OFF"
extends: .build
allow_failure: true
Release Clang GMX9999D:
variables:
CC: "clang"
CXX: "clang++"
CMAKE_BUILD_TYPE: "Release"
DISTRO: "fedora_gmx9999_d"
REGRESSION_TESTING: "OFF"
extends: .build
allow_failure: true
Release GCC OWN GMX:
variables:
CC: "gcc"
CXX: "g++"
CMAKE_BUILD_TYPE: "Release"
DISTRO: "fedora_nogmx"
BUILD_GROMACS: "yes"
extends: .build