Revision 78d7695e70694df479099377176af419ae0c1782 authored by Konrad Werys on 09 March 2019, 17:32:43 UTC, committed by Konrad Werys on 09 March 2019, 17:32:43 UTC
1 parent cd69cb0
.travis.yml
#------------------------------------#
# Tomato #
#------------------------------------#
language: cpp
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
- USE_ITK: "OFF"
- EXTENDED_BUILD: "OFF"
- DEPLOY_BUILD: "OFF"
- secure: ${GH_PERSONAL_ACCESS_TOKEN}
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- 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_inputDirPaths.yaml
- zip -r testData.zip tomatoConfig_Shmolli_inputFilePaths.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};
- cd ..;
- git clone https://MRKonrad:${GH_PERSONAL_ACCESS_TOKEN}@github.com/MRKonrad/tomato_private
# download ITK
- cd ${TRAVIS_BUILD_DIR};
- cd ..;
- if [ "$TRAVIS_OS_NAME" == "osx" ]; then
curl -L -O https://www.dropbox.com/s/zi7wfc9qev2529d/ITK413_osx_install.zip;
unzip -a -q ITK413_osx_install.zip;
export USE_ITK="ON";
fi
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then
curl -L -O https://www.dropbox.com/s/w35r9k376gg1cc3/ITK413_linux_install.zip;
unzip -a -q ITK413_linux_install.zip;
export USE_ITK="ON";
fi
- cd ${TRAVIS_BUILD_DIR};
script:
# configure and generate
- cmake . -DCMAKE_INSTALL_PREFIX=install -DCMAKE_CXX_STANDARD=${CXX_STANDARD} -DUSE_ITK=${USE_ITK}
# add coverage option (only in linux g++)
- if [ "$EXTENDED_BUILD" == "ON" ]; then
cmake -DCOVERAGE=1 . ;
fi
# this is make
- make -j8
- make install
# testing and getting the test coverage
- cd tests
- ./TomatoTests
- cd $TRAVIS_BUILD_DIR
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 ;
eval "lcov --no-external --directory . --capture --output-file coverage.info" ;
eval "lcov --remove coverage.info 'thirdParty/*' -o coverage.info" ;
eval "lcov --remove coverage.info 'tests/*' -o coverage.info" ;
eval "lcov --list coverage.info" ;
bash <(curl -s https://codecov.io/bash) || 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
before_deploy:
- echo "Ready to deploy?"
- mkdir deployment
# copy the test data
- cp ${TRAVIS_BUILD_DIR}/tests/testData.zip ${TRAVIS_BUILD_DIR}/deployment/testData.zip
# copy the executable
- cd $TRAVIS_BUILD_DIR
- export exe_extended_name=TomatoExe_${TRAVIS_BRANCH}_${TRAVIS_OS_NAME} # just a variable
- cp TomatoExe ${exe_extended_name}
- cd deployment
# Problem: when deploying an executable as it is, somewhere in the process its permission to execute (-x) is lost.
# Solution: zip it and deploy the archive
- zip -r ${exe_extended_name}.zip ../${exe_extended_name}
- cd ..
deploy:
provider: releases # GitHub
api_key:
secure: ${GH_PERSONAL_ACCESS_TOKEN}
file_glob: ON # to use wildcards
file: deployment/*
skip_cleanup: ON
on:
tags: ON
condition: ${DEPLOY_BUILD} == "ON" # I guess I have to pick one compiler
Computing file changes ...