Files
boost-ci/.travis.yml
2025-09-16 06:21:31 -06:00

241 lines
11 KiB
YAML

# Copyright 2016 Peter Dimov
# Copyright 2017 - 2019 James E. King III
# Copyright 2019 - 2020 Alexander Grund
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
#
# Generic Travis CI build script for boostorg repositories
# See: https://github.com/boostorg/boost-ci
#
# Instructions for customizing this script for your library:
#
# 1. Customize the compilers and language levels you want in the 'jobs'.
# 2. If you have more than include/, src/, test/, example/, examples/, or
# tools/ directories, modify your Travis CI project and add the environment
# variable DEPINST. For example if your build uses code in "bench/" and
# "fog/" directories, then set DEPINST to the following:
# --include bench --include fog
# 3. If you want to enable Coverity Scan, you need to provide the environment
# variables COVERITY_SCAN_TOKEN and COVERITY_SCAN_NOTIFICATION_EMAIL in
# your github settings.
# 4. If you want to enable a big-endian build, you need to uncomment the
# big-endian build job.
# 5. Enable pull request builds in your boostorg/<library> account.
#
# That's it - the scripts will do everything else for you.
language: cpp
os: linux
dist: xenial
branches:
only:
- master
- develop
- /bugfix\/.*/
- /feature\/.*/
- /fix\/.*/
- /pr\/.*/
env:
global:
- CODECOV_NAME=Travis
# see: http://www.boost.org/build/doc/html/bbv2/overview/invocation.html#bbv2.overview.invocation.properties
# - B2_ADDRESS_MODEL=64,32
# - B2_LINK=shared,static
# - B2_THREADING=threading=multi,single
- B2_VARIANT=release
install:
- git clone --depth 1 https://github.com/boostorg/boost-ci.git boost-ci-cloned
# Copy ci folder if not testing Boost.CI
- [[ $(basename "$TRAVIS_BUILD_DIR") = "boost-ci" ]] || cp -prf boost-ci-cloned/ci .
- rm -rf boost-ci-cloned
- source ci/travis/install.sh
script: $BOOST_ROOT/libs/$SELF/ci/travis/build.sh
# Default toolsets in Ubuntu
#
# trusty xenial bionic
# 14.04 16.04 18.04
# ------ ------ ------
# clang 3.4 3.8 6.0
# gcc 4.8.2 5.3.1 7.3.0
anchors:
libcpp: &libcpp { apt: { packages: [libc++-dev, libc++-helpers] } }
# More reliable way to add this as "ubuntu-toolchain-r-test" may fail on travis whitelisting
ubuntu-toolchain-r-test:
- &ubuntu-toolchain-r-test
sourceline: "ppa:ubuntu-toolchain-r/test"
llvm-toolchain-xenial-9: &llvm-toolchain-xenial-9
sourceline: 'deb https://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main'
key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
llvm-toolchain-xenial-10: &llvm-toolchain-xenial-10
sourceline: 'deb https://apt.llvm.org/xenial/ llvm-toolchain-xenial-10 main'
key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
clang-33: &clang-33 { apt: { packages: [ "clang-3.3"] } }
clang-34: &clang-34 { apt: { packages: [ "clang-3.4"] } }
clang-35: &clang-35 { apt: { packages: [ "clang-3.5"], sources: [ *ubuntu-toolchain-r-test ] } }
clang-36: &clang-36 { apt: { packages: [ "clang-3.6"], sources: [ *ubuntu-toolchain-r-test ] } }
clang-37: &clang-37 { apt: { packages: [ "clang-3.7"], sources: [ *ubuntu-toolchain-r-test ] } }
clang-38: &clang-38 { apt: { packages: [ "clang-3.8"], sources: [ *ubuntu-toolchain-r-test ] } }
clang-39: &clang-39 { apt: { packages: [ "clang-3.9"], sources: [ *ubuntu-toolchain-r-test ] } }
clang-4: &clang-4 { apt: { packages: [ "clang-4.0",
"libstdc++-6-dev" ], sources: [ "llvm-toolchain-xenial-4.0",
*ubuntu-toolchain-r-test ] } }
clang-5: &clang-5 { apt: { packages: [ "clang-5.0",
"libstdc++-7-dev" ], sources: [ "llvm-toolchain-xenial-5.0",
*ubuntu-toolchain-r-test ] } }
clang-6: &clang-6 { apt: { packages: [ "clang-6.0",
"libc6-dbg",
"libc++-dev",
"libstdc++-8-dev" ], sources: [ "llvm-toolchain-xenial-6.0",
*ubuntu-toolchain-r-test ] } }
clang-7: &clang-7 { apt: { packages: [ "clang-7",
"libc6-dbg",
"libc++-dev",
"libstdc++-8-dev" ], sources: [ "llvm-toolchain-xenial-7",
*ubuntu-toolchain-r-test ] } }
clang-8: &clang-8 { apt: { packages: [ "clang-8",
"libc6-dbg",
"libc++-dev",
"libstdc++-8-dev" ], sources: [ "llvm-toolchain-xenial-8",
*ubuntu-toolchain-r-test ] } }
clang-9: &clang-9 { apt: { packages: [ "clang-9" ], sources: [ *llvm-toolchain-xenial-9,
*ubuntu-toolchain-r-test ] } }
clang-10: &clang-10 { apt: { packages: [ "clang-10"], sources: [ *llvm-toolchain-xenial-10,
*ubuntu-toolchain-r-test ] } }
gcc-44: &gcc-44 { apt: { packages: [ "g++-4.4" ], sources: [ *ubuntu-toolchain-r-test ] } }
gcc-46: &gcc-46 { apt: { packages: [ "g++-4.6" ], sources: [ *ubuntu-toolchain-r-test ] } }
gcc-47: &gcc-47 { apt: { packages: [ "g++-4.7" ], sources: [ *ubuntu-toolchain-r-test ] } }
gcc-48: &gcc-48 { apt: { packages: [ "g++-4.8" ], sources: [ *ubuntu-toolchain-r-test ] } }
gcc-49: &gcc-49 { apt: { packages: [ "g++-4.9" ], sources: [ *ubuntu-toolchain-r-test ] } }
gcc-5: &gcc-5 { apt: { packages: [ "g++-5" ], sources: [ *ubuntu-toolchain-r-test ] } }
gcc-6: &gcc-6 { apt: { packages: [ "g++-6" ], sources: [ *ubuntu-toolchain-r-test ] } }
gcc-7: &gcc-7 { apt: { packages: [ "g++-7" ], sources: [ *ubuntu-toolchain-r-test ] } }
gcc-8: &gcc-8 { apt: { packages: [ "g++-8" ], sources: [ *ubuntu-toolchain-r-test ] } }
gcc-9: &gcc-9 { apt: { packages: [ "g++-9" ], sources: [ *ubuntu-toolchain-r-test ] } }
jobs:
allow_failures:
- env:
- COPY="all the environment settings from your job"
include:
- compiler: g++-8
env:
- COMMENT=codecov.io
- B2_CXXSTD=03,11
- B2_DEFINES="BOOST_NO_STRESS_TEST=1"
addons: *gcc-8
script: $BOOST_ROOT/libs/$SELF/ci/travis/codecov.sh
- compiler: g++-8
env:
- COMMENT=asan
- B2_VARIANT=debug
- B2_CXXSTD=03,11,14
- B2_ASAN=1
- B2_DEFINES="BOOST_NO_STRESS_TEST=1"
addons: *gcc-8
- compiler: g++-8
env:
- COMMENT=tsan
- B2_VARIANT=debug
- B2_CXXSTD=03,11,14
- B2_TSAN=1
- B2_DEFINES="BOOST_NO_STRESS_TEST=1"
addons: *gcc-8
- compiler: g++-8
env:
- COMMENT=ubsan
- B2_VARIANT=debug
- B2_CXXSTD=03,11,14
- B2_UBSAN=1
- B2_DEFINES="BOOST_NO_STRESS_TEST=1"
- B2_LINKFLAGS="-fuse-ld=gold"
addons: *gcc-8
- compiler: clang-6.0
env:
- COMMENT=valgrind
- B2_CXXSTD=03,11,14
- B2_DEFINES="BOOST_NO_STRESS_TEST=1"
- B2_VARIANT=debug
- B2_TESTFLAGS=testing.launcher=valgrind
- VALGRIND_OPTS=--error-exitcode=1
addons: *clang-6
script:
- cd $BOOST_ROOT/libs/$SELF
- ci/travis/valgrind.sh
# libstdc++
- { dist: "trusty", # xenial has libstdc++ from gcc 5.4.0 with newer ABI
compiler: g++-4.8 , env: [ "B2_CXXSTD=03,11" ], addons: *gcc-48 }
- { dist: "trusty", # xenial has libstdc++ from gcc 5.4.0 with newer ABI
compiler: g++-4.9 , env: [ "B2_CXXSTD=03,11" ], addons: *gcc-49 }
- { compiler: g++-5 , env: [ "B2_CXXSTD=03,11" ], addons: *gcc-5 }
- { compiler: g++-6 , env: [ "B2_CXXSTD=11,14" ], addons: *gcc-6 }
- { compiler: g++-7 , env: [ "B2_CXXSTD=14,17" ], addons: *gcc-7 }
- { compiler: g++-8 , env: [ "B2_CXXSTD=17,2a" ], addons: *gcc-8 }
- { compiler: g++-9 , env: [ "B2_CXXSTD=17,2a" ], addons: *gcc-9 }
- { dist: "trusty", # xenial has libstdc++ from gcc 5.4.0 with newer ABI
compiler: clang-3.8, env: [ "B2_CXXSTD=03,11" ], addons: *clang-38 }
- { compiler: clang-4.0, env: [ "B2_CXXSTD=11,14" ], addons: *clang-4 }
- { compiler: clang-5.0, env: [ "B2_CXXSTD=11,14" ], addons: *clang-5 }
- { compiler: clang-6.0, env: [ "B2_CXXSTD=14,17" ], addons: *clang-6 }
- { compiler: clang-7 , env: [ "B2_CXXSTD=17,2a" ], addons: *clang-7 }
- { compiler: clang-8 , env: [ "B2_CXXSTD=17,2a" ], addons: *clang-8 }
- { compiler: clang-9 , env: [ "B2_CXXSTD=03,11,14,17,2a" ], addons: *clang-9 }
- { compiler: clang-10 , env: [ "B2_CXXSTD=03,11,14,17,2a" ], addons: *clang-10 }
# libc++
- { compiler: clang-6.0, env: [ "B2_CXXSTD=03,11,14", "B2_STDLIB=libc++" ], addons: *clang-6 }
- { os: "osx",
compiler: clang , env: [ "B2_CXXSTD=03,11,17" ] }
# to enable Intel ICC define INTEL_ICC_SERIAL_NUMBER and the following (under development):
# - { env: [ "B2_TOOLSET=intel-linux", "B2_CXXSTD=11,14,17" ], addons: *gcc-7,
# script: cd $BOOST_ROOT/libs/$SELF && ci/travis/intelicc.sh }
# uncomment to enable a big-endian build job, just note that it is 5-10 times slower
# than a regular build and travis has a 50 minute time limit per job
# - os: linux
# compiler: gcc
# env:
# - COMMENT=big-endian
# - B2_CXXSTD=03
# - B2_DEFINES="BOOST_NO_STRESS_TEST=1"
# - BDDE_OS=red
# - BDDE_ARCH=ppc64
# script:
# - cd $BOOST_ROOT/libs/$SELF
# - ci/travis/bdde.sh
# - os: linux
# env:
# - COMMENT=cppcheck
# script:
# - cd $BOOST_ROOT/libs/$SELF
# - ci/travis/cppcheck.sh
#################### Jobs to run on pushes to master, develop ###################
# Coverity Scan
- if: (env(COVERITY_SCAN_NOTIFICATION_EMAIL) IS present) AND (branch IN (develop, master)) AND (type IN (cron, push))
compiler: clang
env: [ COMMENT="Coverity Scan" ]
script:
- cd $BOOST_ROOT/libs/$SELF
- ci/travis/coverity.sh
notifications:
email:
false