diff --git a/.travis-ci.d/compile_and_test.sh b/.travis-ci.d/compile_and_test.sh index 27ba9c8..1f4971e 100755 --- a/.travis-ci.d/compile_and_test.sh +++ b/.travis-ci.d/compile_and_test.sh @@ -6,7 +6,7 @@ source $ILCSOFT/init_ilcsoft.sh cd /Package mkdir build cd build -cmake -GNinja -C $ILCSOFT/ILCSoft.cmake -DCMAKE_CXX_FLAGS="-fdiagnostics-color=always" .. -ninja +cmake -GNinja -C $ILCSOFT/ILCSoft.cmake -DCMAKE_CXX_FLAGS="-fdiagnostics-color=always" .. && \ +ninja && \ +ninja install && \ ctest --output-on-failure - diff --git a/.travis-ci.d/coverity_scan.sh b/.travis-ci.d/coverity_scan.sh new file mode 100755 index 0000000..8ee8bf1 --- /dev/null +++ b/.travis-ci.d/coverity_scan.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +ILCSOFT=/cvmfs/clicdp.cern.ch/iLCSoft/builds/current/CI_${COMPILER} +source $ILCSOFT/init_ilcsoft.sh + +cd /Package +mkdir build +cd build +cmake -C $ILCSOFT/ILCSoft.cmake -DCMAKE_CXX_FLAGS="-fdiagnostics-color=always" .. && \ +export PATH=/Package/cov-analysis-linux64/bin:$PATH && \ +cov-build --dir cov-int make -j2 && \ +tar czvf myproject.tgz cov-int diff --git a/.travis.yml b/.travis.yml index f691642..e2fc487 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,6 +11,22 @@ env: - COMPILER=gcc - COMPILER=llvm + +before_install: + - wget https://ecsft.cern.ch/dist/cvmfs/cvmfs-release/cvmfs-release-latest_all.deb + - sudo dpkg -i cvmfs-release-latest_all.deb + - sudo apt-get update + - sudo apt-get install cvmfs cvmfs-config-default + - rm -f cvmfs-release-latest_all.deb + - wget https://lcd-data.web.cern.ch/lcd-data/CernVM/default.local + - sudo mkdir -p /etc/cvmfs + - sudo mv default.local /etc/cvmfs/default.local + - sudo /etc/init.d/autofs stop + - sudo cvmfs_config setup + - sudo mkdir -p /cvmfs/clicdp.cern.ch + - sudo mount -t cvmfs clicdp.cern.ch /cvmfs/clicdp.cern.ch + - ls /cvmfs/clicdp.cern.ch + # command to install dependencies install: - shopt -s extglob dotglob @@ -18,13 +34,27 @@ install: - mv !(Package) Package - shopt -u dotglob - export PKGDIR=${PWD}/Package - - curl -O https://lcd-data.web.cern.ch/lcd-data/CernVM/cernvm3-docker-latest.tar - - cat cernvm3-docker-latest.tar | docker import - cernvm + - export description=`date` + - export COVERITY_REPO=`echo ${TRAVIS_REPO_SLUG} | sed 's/\//\%2F/g'` + - if [[ "${TRAVIS_EVENT_TYPE}" == "cron" && "${COMPILER}" == "gcc" ]]; + then wget https://scan.coverity.com/download/linux64 --post-data "token=${COVERITY_SCAN_TOKEN}&project=${COVERITY_REPO}" -O Package/coverity_tool.tgz; cd Package; mkdir cov-analysis-linux64; tar -xf coverity_tool.tgz -C cov-analysis-linux64 --strip-components=2; + fi # command to run tests script: - - docker run -t -v $PKGDIR:/Package -e COMPILER=$COMPILER cernvm /init /Package/.travis-ci.d/compile_and_test.sh + - docker run -it --name CI_container -v $PKGDIR:/Package -e COMPILER=$COMPILER -v /cvmfs/clicdp.cern.ch:/cvmfs/clicdp.cern.ch -d clicdp/slc6-build /bin/bash + - if [[ "${TRAVIS_EVENT_TYPE}" == "cron" && "${COMPILER}" == "gcc" ]]; + then docker exec -it CI_container /bin/bash -c "./Package/.travis-ci.d/coverity_scan.sh"; + elif [[ "${TRAVIS_EVENT_TYPE}" == "cron" && "${COMPILER}" == "llvm" ]]; + then echo "Running the weekly Coverity Scan, no LLVM/Clang build this time"; + else docker exec -it CI_container /bin/bash -c "./Package/.travis-ci.d/compile_and_test.sh"; + fi + - if [[ "${TRAVIS_EVENT_TYPE}" == "cron" && "${COMPILER}" == "gcc" ]]; + then curl --form token=${COVERITY_SCAN_TOKEN} --form email=noreply@cern.ch --form file=@${PKGDIR}/build/myproject.tgz --form version="master" --form description="${description}" https://scan.coverity.com/builds?project=${COVERITY_REPO} ; + fi # Don't send e-mail notifications notifications: - email: false + email: + on_success: never + on_failure: always diff --git a/README.md b/README.md index 014d890..7c828f8 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # RAIDA [![Build Status](https://travis-ci.org/iLCSoft/RAIDA.svg?branch=master)](https://travis-ci.org/iLCSoft/RAIDA) +[![Coverity Scan Build Status](https://scan.coverity.com/projects/12491/badge.svg)](https://scan.coverity.com/projects/ilcsoft-raida) RAIDA [Root](http://root.cern.ch) implementation of [AIDA](http://aida.freehep.org)(Abstract Interfaces for Data Analysis). The motivation for the development of RAIDA was to offer the possibility to create and fill n-tuple or histograms using standard ROOT objects with AIDA. All ROOT objects created with AIDA are stored in a ROOT file. Since our main application of RAIDA is to create ROOT output to be analysed using the ROOT program, the current version can not read in the root files created. Furthermore only objects, which exist within ROOT can be created.