language: c
install_coverity: &install_coverity
if [ "${COVERITY_SCAN}" = "true" ]; then
COV_DIR="/tmp/coverity-scan-analysis";
COV_ARC="/tmp/cov-analysis-${COV_PLATFORM}.tgz";
test ! -d "${COV_DIR}" &&
mkdir -p "${COV_DIR}" &&
curl -s -S -F project="${TRAVIS_REPO_SLUG}"
-F token="${COVERITY_SCAN_TOKEN}"
-o "${COV_ARC}"
"https://scan.coverity.com/download/cxx/${COV_PLATFORM}" &&
tar -xzf "${COV_ARC}" -C "${COV_DIR}";
COV_ANALYSIS=$(find "${COV_DIR}" -type d -name "cov-analysis*");
eval "export PATH=\"${PATH}:${COV_ANALYSIS}/bin\"";
eval "export SCAN_BUILD=\"cov-build --dir cov-int\"";
cov-configure --comptype ${COV_COMPTYPE} --compiler ${CC} --template;
fi
submit_to_coverity_scan: &submit_to_coverity_scan
if [ "${COVERITY_SCAN}" = "true" ]; then
tar -czf analysis-results.tgz cov-int &&
curl -s -S -F project="${TRAVIS_REPO_SLUG}"
-F token="${COVERITY_SCAN_TOKEN}"
-F file=@analysis-results.tgz
-F version=$(git rev-parse --short HEAD)
-F description="Travis CI build"
-F email="${COVERITY_SCAN_EMAIL:=cyclonedds-inbox@eclipse.org}"
"https://scan.coverity.com/builds";
fi
ubuntu1804_gcc10: &ubuntu1804_gcc10
os: linux
dist: bionic
compiler: gcc
addons:
apt:
update: true
sources:
- sourceline: 'ppa:ubuntu-toolchain-r/test'
packages: [ gcc-10 g++-10 ]
before_install:
- eval "export CC=gcc-10 CXX=g++-10"
- eval "export COV_COMPTYPE=gcc COV_PLATFORM=linux64"
- eval "export BUILD_TOOL_OPTIONS='-j 4'"
- eval "export GENERATOR='Unix Makefiles'"
install:
- *install_coverity
- pip install conan --upgrade --user
ubuntu1804_clang10: &ubuntu1804_clang10
os: linux
dist: bionic
compiler: clang
addons:
apt:
update: true
sources:
- sourceline: 'deb https://apt.llvm.org/bionic llvm-toolchain-bionic-10 main'
key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
packages: [ clang-10 clang++-10 ]
before_install:
- eval "export CC=clang-10 CXX=clang++-10"
- eval "export COV_COMPTYPE=clang COV_PLATFORM=linux64"
- eval "export BUILD_TOOL_OPTIONS='-j 4'"
- eval "export GENERATOR='Unix Makefiles'"
install:
- pip install conan --upgrade --user
macos1015_xcode11_6: &macos1015_xcode11_6
os: osx
osx_image: xcode11.6
compiler: clang
addons:
homebrew:
packages: [ python3 ]
before_install:
- eval "export CC=clang CXX=clang++"
- eval "export COV_COMPTYPE=clang COV_PLATFORM=macOSX"
- eval "export BUILD_TOOL_OPTIONS='-j 4'"
- eval "export GENERATOR='Unix Makefiles'"
- eval "export PATH=\"${PATH}:$(python3 -m site --user-base)/bin\""
install:
- python3 -m pip install conan --upgrade --user
windows1809_vs2017: &windows1809_vs2017
os: windows
filter_secrets: false
before_install:
- eval "unset COVERITY_SCAN_TOKEN"
- eval "unset COVERITY_SCAN_EMAIL"
- eval "unset CC CXX"
- eval "export COV_COMPTYPE=msvc COV_PLATFORM=win64"
- eval "export BUILD_TOOL_OPTIONS='-nologo -verbosity:minimal -maxcpucount -p:CL_MPCount=2'"
- |
if [ "${ARCH}" = "x86_64" ]; then
eval "export GENERATOR='Visual Studio 15 2017 Win64'"
else
eval "export GENERATOR='Visual Studio 15 2017'"
fi
- JAVA_HOME=$(find "/c/Program Files/Android/jdk/" -name "*openjdk*" | sort | head -n 1)
- export JAVA_HOME
- export PATH="${PATH}:${JAVA_HOME}/bin"
install:
- choco install innoextract
- choco install maven --ignore-dependencies
- wget -q https://dl.bintray.com/conan/installers/conan-win-64_1_10_0.exe
- innoextract conan-win-64_1_10_0.exe
- eval "export PATH=\"$(pwd)/app/conan:${PATH}\""
jobs:
include:
- <<: *ubuntu1804_gcc10
env: [ ARCH=x86_64, BUILD_TYPE=Debug, SSL=YES, SECURITY=YES, LIFESPAN=YES, DEADLINE=YES, COVERITY_SCAN=true ]
if: type = cron
- <<: *ubuntu1804_gcc10
env: [ ARCH=x86_64, BUILD_TYPE=Debug, SSL=YES, SECURITY=YES, LIFESPAN=YES, DEADLINE=YES ]
- <<: *ubuntu1804_gcc10
env: [ ARCH=x86_64, BUILD_TYPE=Debug, SSL=YES, SECURITY=YES, LIFESPAN=YES, DEADLINE=YES, CONANFILE=conanfile102.txt ]
- <<: *ubuntu1804_gcc10
env: [ ARCH=x86_64, BUILD_TYPE=Release, SSL=YES, SECURITY=YES, LIFESPAN=YES, DEADLINE=YES ]
- <<: *ubuntu1804_gcc10
env: [ ARCH=x86_64, BUILD_TYPE=Debug, SSL=NO, SECURITY=YES, LIFESPAN=NO, DEADLINE=NO ]
- <<: *ubuntu1804_clang10
env: [ ARCH=x86_64, SANITIZER=address, BUILD_TYPE=Debug, SSL=YES, SECURITY=YES, LIFESPAN=YES, DEADLINE=YES ]
- <<: *ubuntu1804_clang10
env: [ ARCH=x86_64, SANITIZER=address, BUILD_TYPE=Debug, SSL=YES, SECURITY=NO, LIFESPAN=YES, DEADLINE=YES ]
- <<: *ubuntu1804_clang10
env: [ ARCH=x86_64, BUILD_TYPE=Release, SSL=YES, SECURITY=YES, LIFESPAN=YES, DEADLINE=YES ]
- <<: *macos1015_xcode11_6
env: [ ARCH=x86_64, BUILD_TYPE=Release, SSL=NO, SECURITY=YES, LIFESPAN=YES, DEADLINE=YES, MACOSX_DEPLOYMENT_TARGET=10.12 ]
- <<: *macos1015_xcode11_6
env: [ ARCH=x86_64, SANITIZER=address, BUILD_TYPE=Debug, SSL=YES, SECURITY=YES, LIFESPAN=YES, DEADLINE=YES ]
- <<: *macos1015_xcode11_6
env: [ ARCH=x86_64, BUILD_TYPE=Release, SSL=YES, SECURITY=YES, LIFESPAN=YES, DEADLINE=YES ]
- <<: *windows1809_vs2017
env: [ ARCH=x86, BUILD_TYPE=Debug, SSL=YES, SECURITY=YES, LIFESPAN=YES, DEADLINE=YES, CONANFILE=conanfile102.txt ]
- <<: *windows1809_vs2017
env: [ ARCH=x86_64, BUILD_TYPE=Debug, SSL=YES, SECURITY=YES, LIFESPAN=YES, DEADLINE=YES ]
- <<: *windows1809_vs2017
env: [ ARCH=x86_64, BUILD_TYPE=Release, SSL=YES, SECURITY=YES, LIFESPAN=YES, DEADLINE=YES ]
before_script:
- conan profile new default --detect
- conan remote add bincrafters https://api.bintray.com/conan/bincrafters/public-conan
script:
- INSTALLPREFIX="$(pwd)/install"
- mkdir build
- cd build
- conan install -b missing -s arch=${ARCH} -s build_type=${BUILD_TYPE} ../${CONANFILE:-conanfile.txt}
- cmake -DCMAKE_BUILD_TYPE=${BUILD_TYPE}
-DCMAKE_INSTALL_PREFIX=${INSTALLPREFIX}
-DUSE_SANITIZER=${SANITIZER}
-DENABLE_SSL=${SSL}
-DENABLE_SECURITY=${SECURITY}
-DENABLE_LIFESPAN=${LIFESPAN}
-DENABLE_DEADLINE_MISSED=${DEADLINE}
-DBUILD_TESTING=on
-DWERROR=on
-G "${GENERATOR}" ..
- ${SCAN_BUILD} cmake --build . --config ${BUILD_TYPE} --target install -- ${BUILD_TOOL_OPTIONS}
- CYCLONEDDS_URI='<CycloneDDS><Domain><Internal><EnableExpensiveChecks>all</EnableExpensiveChecks><LivelinessMonitoring>true</LivelinessMonitoring></Internal><Tracing><Verbosity>config</Verbosity><OutputFile>stderr</OutputFile></Tracing></Domain></CycloneDDS>' ctest -j 4 --output-on-failure -T test -E '^CUnit_ddsrt_random_default_random$' -C ${BUILD_TYPE}
- |
if [ -z "${SANITIZER}" ]; then
${SHELL} ../src/tools/ddsperf/sanity.bash;
fi
- |
if [ -n "${SANITIZER}" ]; then
CMAKE_LINKER_FLAGS="-DCMAKE_LINKER_FLAGS=-fsanitize=${USE_SANITIZER}";
CMAKE_C_FLAGS="-DCMAKE_C_FLAGS=-fsanitize=${USE_SANITIZER}";
fi
- |
if [ "${SSL}" = "YES" ] && [ "${SECURITY}" = "YES" ]; then
diff --strip-trailing-cr ../etc/cyclonedds.rnc docs/cyclonedds.rnc && \
diff --strip-trailing-cr ../etc/cyclonedds.xsd docs/cyclonedds.xsd && \
diff --strip-trailing-cr ../docs/manual/options.md docs/manual/options.md
fi
- cd ..
- mkdir helloworld_build
- cd helloworld_build
- cmake -DCMAKE_PREFIX_PATH=${INSTALLPREFIX}
-DCMAKE_BUILD_TYPE=${BUILD_TYPE}
${CMAKE_C_FLAGS}
${CMAKE_LINKER_FLAGS}
-G "${GENERATOR}"
${INSTALLPREFIX}/share/CycloneDDS/examples/helloworld
- cmake --build . --config ${BUILD_TYPE}
- cd "${TRAVIS_BUILD_DIR}/build"
after_success:
- *submit_to_coverity_scan