Revision e04c3b61b4221d74d35ec225d3d9c77b7d9ccb6d authored by Konrad Werys on 16 August 2019, 08:55:39 UTC, committed by Konrad Werys on 16 August 2019, 08:55:39 UTC
1 parent 4496c91
.travis.yml
#------------#
# Tomato #
#------------#
language: cpp
dist: trusty
os:
- linux
- osx
compiler:
- gcc
# - clang
# Blacklist the documentation branch
branches:
except:
- gh-pages
# Environment variables
env:
matrix:
- CXX_STANDARD=98
# - CXX_STANDARD=11
global:
- GH_REPO_NAME: Tomato # used in documentation script
- DOXYFILE: $TRAVIS_BUILD_DIR/Doxyfile # used in documentation script
- INPUT_FOR_DOXY: "'. ./app ./lib ./tests'" # used in documentation script
- OUTPUT_FOR_DOXY: "${TRAVIS_BUILD_DIR}/code_docs/${GH_REPO_NAME}" # used in documentation script
- GH_REPO_REF: github.com/MRKonrad/Tomato.git # used in documentation script
- EXTENDED_BUILD: "OFF"
- DEPLOY_BUILD: "OFF"
- secure: ${GH_PERSONAL_ACCESS_TOKEN}
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- gcc-4.9
- g++-4.9
- doxygen
- doxygen-doc
- doxygen-latex
- doxygen-gui
- graphviz
- lcov
before_install:
# condition for the extended build (with coverage and documentation)
- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$CXX" == "g++" ] && [ "$CXX_STANDARD" == "98" ]; then
EXTENDED_BUILD="ON";
fi
# condition for the deployment build
- if [ "$CXX" == "g++" ] && [ "$CXX_STANDARD" == "98" ]; then
export DEPLOY_BUILD="ON";
fi
# zip the data used for deployment
- cd ${TRAVIS_BUILD_DIR}/tests/testData
- zip -r testData.zip dicom
- zip -r testData.zip tomatoConfig_Shmolli_inputFilePaths.yaml
# - zip -r testData.zip tomatoConfig_Shmolli_inputDirPaths.yaml
install:
# install coverage tools only in linux g++
- if [ "$EXTENDED_BUILD" == "ON" ]; then
sudo pip install codecov;
fi
# download tomato_private
- cd ${TRAVIS_BUILD_DIR}/..
- git clone https://MRKonrad:${GH_PERSONAL_ACCESS_TOKEN}@github.com/MRKonrad/tomato_private
# download ITK binaries
- cd ${TRAVIS_BUILD_DIR}/scriptsBuild
- bash downloadITK_linux_osx.sh
- bash downloadLmfit_linux_osx.sh
script:
# configure and generate static
- mkdir ${TRAVIS_BUILD_DIR}/static;
- cd ${TRAVIS_BUILD_DIR}/static;
- cmake .. -DCMAKE_INSTALL_PREFIX=${TRAVIS_BUILD_DIR}/install -DCMAKE_CXX_STANDARD=${CXX_STANDARD} -DITK_DIR_HINTS="${TRAVIS_BUILD_DIR}/../ITK_install" -DLIB_INSTALL_DIR="lib_static"
# add coverage option (only in linux g++)
- if [ "$EXTENDED_BUILD" == "ON" ]; then
cmake .. -DCMAKE_CXX_FLAGS="--coverage" ;
fi
# build shared static
- cmake --build . --config RELEASE
- cmake --build . --config RELEASE --target install
# configure and generate SHARED
- mkdir ${TRAVIS_BUILD_DIR}/shared;
- cd ${TRAVIS_BUILD_DIR}/shared;
- cmake .. -DCMAKE_INSTALL_PREFIX=${TRAVIS_BUILD_DIR}/install -DCMAKE_CXX_STANDARD=${CXX_STANDARD} -DITK_DIR_HINTS="${TRAVIS_BUILD_DIR}/../ITK_install" -DBUILD_SHARED_LIBS=ON -DUSE_YAML=OFF -DLIB_INSTALL_DIR="lib_shared"
# build shared
- cmake --build . --config RELEASE
- cmake --build . --config RELEASE --target install
# testing and getting the test coverage
- cd ${TRAVIS_BUILD_DIR}/static/tests
- ./TomatoTests
after_success:
# Run coverage analysis only in linux g++. Eval because travis wants to parse -- as part of yaml block
- if [ "$EXTENDED_BUILD" == "ON" ]; then
cd ${TRAVIS_BUILD_DIR}/static ;
cp ${TRAVIS_BUILD_DIR}/scriptsBuild/generateTestCoverageReport.sh generateTestCoverageReport.sh;
sh generateTestCoverageReport.sh;
ls;
bash <(curl -s https://codecov.io/bash) -f coverage.info || echo "Codecov did not collect coverage reports" ;
fi
# Generate and deploy documentation only in linux g++
- if [ "$EXTENDED_BUILD" == "ON" ]; then
cd ${TRAVIS_BUILD_DIR} ;
chmod +x generateDocumentationAndDeploy.sh;
./generateDocumentationAndDeploy.sh;
fi
# getting ready to deploy
- mkdir ${TRAVIS_BUILD_DIR}/deployment
- export exe_extended_name=TomatoExe_${TRAVIS_BRANCH}_${TRAVIS_OS_NAME} # just a variable
- export lib_extended_name=TomatoLib_${TRAVIS_BRANCH}_${TRAVIS_OS_NAME} # just a variable
- cd ${TRAVIS_BUILD_DIR}/install
# zip the files
- zip -r -j ${exe_extended_name}.zip bin # -j because we do not want the directory tree in the zip file
- zip -r ${lib_extended_name}.zip lib_static
- zip -r ${lib_extended_name}.zip lib_shared
- zip -r ${lib_extended_name}.zip lib
- zip -r ${lib_extended_name}.zip include
# copy the archives
- cp ${exe_extended_name}.zip ${TRAVIS_BUILD_DIR}/deployment/
- cp ${lib_extended_name}.zip ${TRAVIS_BUILD_DIR}/deployment/
- cp ${TRAVIS_BUILD_DIR}/tests/testData/testData.zip ${TRAVIS_BUILD_DIR}/deployment/testData.zip
- ls ${TRAVIS_BUILD_DIR}/deployment
- cd ${TRAVIS_BUILD_DIR} # needed for deployment!!!
deploy:
provider: releases
api_key:
secure: ${GH_PERSONAL_ACCESS_TOKEN}
file_glob: ON
file: deployment/*
skip_cleanup: ON
on:
tags: ON
condition: ${DEPLOY_BUILD} == "ON" # I guess I have to pick one compiler
notifications:
slack:
rooms:
- secure: ljyKu/sP6Ha9o4lZejENiPEhhVL1xQ86YTvywg7/jOSIV7xXy2xDULz6qsZxAi6TcGgPTLGQzb2ydFnHfe5bThW9klOzxTw8Ru+/DfDiPSk3mV3ylVDO6gcwCqoWbc63HGub90wRaEc1mLfp8NAnCq2nOayT7eHBzS2ABKNd0SwS9onaDnbOIIoXdZYw1z1mvOWrUrFErFHv8jeQ0l1MEOWaGGzttpZXB+ZwHOlaSACBCcNH6ZYZqUs9nsyBDa33GI4ktgIlkCeMahsix8ZbaoSE0rWXq5AvO93DhyjPUI3obFHysjI2eQSnMU652ASWOAqMVoHCGSURSvOobCEbVq2OmYfq77UF+ntS2rdQccKE4DEC8A2YN9xNY3H+Coiw2C+NadETxixp0n0byPBUBopg7Jb3iGj76KuEpk5qVzu4xCwJiRPek9o5t8v34+y979Xn9e4wnMN4sN8xS364qU/innBJkZgbYtXolFhX/GA5gglA3PZVq5XdMs16sWxwrG0uRgSsOdz0dhIh6Q2QBYISnjdCj+mJ4PQ+/PNl3nbjq7LGYH19oNV3G8gTZQDHFYWEL6DB517caeKiMZFT6JOgwK5Dd/+JEOuBjUkyP3CuMH8VfB6vrTsmpV3SkaizujCB+LUnzMtFdGOJ3KEhR5OS9pq6nwAW1AYOMTAcT+s=
on_success: always
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...