diff --git a/.travis.yml b/.travis.yml index 8edea08..ea4200d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,136 +1,136 @@ -# Copyright (c) 2012-2023 Sebastien Rombauts (sebastien.rombauts@gmail.com) - -language: cpp - -# Use Linux unless specified otherwise -os: linux - -cache: - apt: true - -env: - global: - - BUILD_TYPE=Debug - - ASAN=ON - - INTERNAL_SQLITE=ON - - VALGRIND=OFF - -# Build variants (should test a reasonable number of combination of CMake options) -jobs: - include: - - ########################################################################## - # GCC on Linux - ########################################################################## - - # Coverity static code analysis - - dist: bionic - env: - - COVERITY_SCAN_PROJECT_NAME=SRombauts/SQLiteCpp - - COVERITY_SCAN_BRANCH_PATTERN=master - - COVERITY_SCAN_NOTIFICATION_EMAIL=sebastien.rombauts@gmail.com - - COVERITY_SCAN_BUILD_COMMAND_PREPEND="cmake ." - - COVERITY_SCAN_BUILD_COMMAND="make -j8" - # Encrypted COVERITY_SCAN_TOKEN, created via the "travis encrypt" command using the project repo's public key - - secure: "Qm4d8NEDPBtYZCYav46uPEvDCtaRsjLXlkVS+C+WCJAPcwXCGkrr96wEi7RWcq2xD86QCh0XiqaPT+xdUmlohOYIovRhaaBmZ1lwIJ4GsG/ZR6xoFr3DYsZ3o4GyXk2vNXNxEl82AC+Xs6e6gkLOV9XRkBcjpVIvoIXgNlKWeGY=" - - # GCC 7.4.0 Debug build with GCov for coverage build - - dist: bionic - env: - - cc=gcc cxx=g++ - - GCOV=ON - - COVERALLS=true - - # GCC 7.4.0 Debug build with Valgrind instead of Address Sanitizer - - dist: bionic - env: - - cc=gcc cxx=g++ - - ASAN=OFF - - VALGRIND=true - - # GCC 7.4.0 Release build - - dist: bionic - env: - - cc=gcc cxx=g++ - - BUILD_TYPE=Release - - # GCC 7.4.0 test linking with libsqlite3-dev package - - dist: bionic - env: - - cc=gcc cxx=g++ - - INTERNAL_SQLITE=OFF - - # GCC 5.4.0 - - dist: xenial - env: - - cc=gcc cxx=g++ - - # GCC 4.8.4 - - dist: trusty - env: - - cc=gcc cxx=g++ - - ########################################################################## - # Clang on Linux - ########################################################################## - - # Clang 7.0.0 - - dist: bionic - env: - - cc=clang cxx=clang++ - - # Clang 7.0.0 - - dist: xenial - env: - - cc=clang cxx=clang++ - - # Clang 5.0.0 - - dist: trusty - env: - - cc=clang cxx=clang++ - - ########################################################################## - # Clang on OSX - ########################################################################## - - # Latest XCode - AppleClang 9.1.0 - - os: osx - env: - - cc=clang cxx=clang++ - - # XCode 8.3 - AppleClang 8.1.0 - - os: osx - osx_image: xcode8.3 - env: - - cc=clang cxx=clang++ - -before_install: - # Coverity: don't use addons.coverity_scan since it run on every job of the build matrix, which waste resources and exhausts quotas - # Note: the job dedicated to Coverity need to only run the shell script and then exit (to not try to build and run unit tests etc.) - - if [[ -n "$COVERITY_SCAN_PROJECT_NAME" ]] ; then curl -s https://scan.coverity.com/scripts/travisci_build_coverity_scan.sh | bash ; exit 0 ; fi - - - if [[ "$INTERNAL_SQLITE" == "OFF" ]]; then sudo apt-get install libsqlite3-dev ; fi - - if [[ "$VALGRIND" == "true" ]]; then sudo apt-get install valgrind ; fi - - if [[ "$COVERALLS" == "true" ]]; then pip install --user cpp-coveralls ; fi - - # Set the compiler environment variables properly - - export CC=${cc} - - export CXX=${cxx} - -# scripts to run before build -before_script: - - mkdir build - - cd build - - cmake -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DSQLITECPP_INTERNAL_SQLITE=$INTERNAL_SQLITE -DSQLITECPP_USE_ASAN=$ASAN -DSQLITECPP_USE_GCOV=$GCOV -DSQLITECPP_BUILD_EXAMPLES=ON -DSQLITECPP_BUILD_TESTS=ON .. - -# build examples, and run tests (ie make & make test) -script: - - cmake --build . - - export ASAN_OPTIONS=verbosity=1:debug=1 - - ctest --verbose --output-on-failure - - if [[ "$VALGRIND" == "true" ]]; then valgrind --leak-check=full --error-exitcode=1 ./SQLiteCpp_example1 ; fi - - if [[ "$VALGRIND" == "true" ]]; then valgrind --leak-check=full --error-exitcode=1 ./SQLiteCpp_tests ; fi - -# generate and publish GCov coveralls results -after_success: - - if [[ "$COVERALLS" == "true" ]]; then coveralls --root .. -e examples -e googletest -e sqlite3 -e tests -E ".*feature_tests.*" -E ".*CompilerId.*" --gcov-options '\-lp' ; fi +# Copyright (c) 2012-2023 Sebastien Rombauts (sebastien.rombauts@gmail.com) + +language: cpp + +# Use Linux unless specified otherwise +os: linux + +cache: + apt: true + +env: + global: + - BUILD_TYPE=Debug + - ASAN=ON + - INTERNAL_SQLITE=ON + - VALGRIND=OFF + +# Build variants (should test a reasonable number of combination of CMake options) +jobs: + include: + + ########################################################################## + # GCC on Linux + ########################################################################## + + # Coverity static code analysis + - dist: bionic + env: + - COVERITY_SCAN_PROJECT_NAME=SRombauts/SQLiteCpp + - COVERITY_SCAN_BRANCH_PATTERN=master + - COVERITY_SCAN_NOTIFICATION_EMAIL=sebastien.rombauts@gmail.com + - COVERITY_SCAN_BUILD_COMMAND_PREPEND="cmake ." + - COVERITY_SCAN_BUILD_COMMAND="make -j8" + # Encrypted COVERITY_SCAN_TOKEN, created via the "travis encrypt" command using the project repo's public key + - secure: "Qm4d8NEDPBtYZCYav46uPEvDCtaRsjLXlkVS+C+WCJAPcwXCGkrr96wEi7RWcq2xD86QCh0XiqaPT+xdUmlohOYIovRhaaBmZ1lwIJ4GsG/ZR6xoFr3DYsZ3o4GyXk2vNXNxEl82AC+Xs6e6gkLOV9XRkBcjpVIvoIXgNlKWeGY=" + + # GCC 7.4.0 Debug build with GCov for coverage build + - dist: bionic + env: + - cc=gcc cxx=g++ + - GCOV=ON + - COVERALLS=true + + # GCC 7.4.0 Debug build with Valgrind instead of Address Sanitizer + - dist: bionic + env: + - cc=gcc cxx=g++ + - ASAN=OFF + - VALGRIND=true + + # GCC 7.4.0 Release build + - dist: bionic + env: + - cc=gcc cxx=g++ + - BUILD_TYPE=Release + + # GCC 7.4.0 test linking with libsqlite3-dev package + - dist: bionic + env: + - cc=gcc cxx=g++ + - INTERNAL_SQLITE=OFF + + # GCC 5.4.0 + - dist: xenial + env: + - cc=gcc cxx=g++ + + # GCC 4.8.4 + - dist: trusty + env: + - cc=gcc cxx=g++ + + ########################################################################## + # Clang on Linux + ########################################################################## + + # Clang 7.0.0 + - dist: bionic + env: + - cc=clang cxx=clang++ + + # Clang 7.0.0 + - dist: xenial + env: + - cc=clang cxx=clang++ + + # Clang 5.0.0 + - dist: trusty + env: + - cc=clang cxx=clang++ + + ########################################################################## + # Clang on OSX + ########################################################################## + + # Latest XCode - AppleClang 9.1.0 + - os: osx + env: + - cc=clang cxx=clang++ + + # XCode 8.3 - AppleClang 8.1.0 + - os: osx + osx_image: xcode8.3 + env: + - cc=clang cxx=clang++ + +before_install: + # Coverity: don't use addons.coverity_scan since it run on every job of the build matrix, which waste resources and exhausts quotas + # Note: the job dedicated to Coverity need to only run the shell script and then exit (to not try to build and run unit tests etc.) + - if [[ -n "$COVERITY_SCAN_PROJECT_NAME" ]] ; then curl -s https://scan.coverity.com/scripts/travisci_build_coverity_scan.sh | bash ; exit 0 ; fi + + - if [[ "$INTERNAL_SQLITE" == "OFF" ]]; then sudo apt-get install libsqlite3-dev ; fi + - if [[ "$VALGRIND" == "true" ]]; then sudo apt-get install valgrind ; fi + - if [[ "$COVERALLS" == "true" ]]; then pip install --user cpp-coveralls ; fi + + # Set the compiler environment variables properly + - export CC=${cc} + - export CXX=${cxx} + +# scripts to run before build +before_script: + - mkdir build + - cd build + - cmake -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DSQLITECPP_INTERNAL_SQLITE=$INTERNAL_SQLITE -DSQLITECPP_USE_ASAN=$ASAN -DSQLITECPP_USE_GCOV=$GCOV -DSQLITECPP_BUILD_EXAMPLES=ON -DSQLITECPP_BUILD_TESTS=ON .. + +# build examples, and run tests (ie make & make test) +script: + - cmake --build . + - export ASAN_OPTIONS=verbosity=1:debug=1 + - ctest --verbose --output-on-failure + - if [[ "$VALGRIND" == "true" ]]; then valgrind --leak-check=full --error-exitcode=1 bin/SQLiteCpp_example1 ; fi + - if [[ "$VALGRIND" == "true" ]]; then valgrind --leak-check=full --error-exitcode=1 bin/SQLiteCpp_tests ; fi + +# generate and publish GCov coveralls results +after_success: + - if [[ "$COVERALLS" == "true" ]]; then coveralls --root .. -e examples -e googletest -e sqlite3 -e tests -E ".*feature_tests.*" -E ".*CompilerId.*" --gcov-options '\-lp' ; fi