mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-30 07:55:51 +00:00
* Builds Windows dependencies first. * Builds ALL OSs in the last stage. * Fix the MacOS builds. * Windows dependency stages are allowed to fail so ALL configurations will attempt to build. Windows builds will probably fail if dependencies fail (caching may allow them to succeed), but they will at least be attempted. * Remove broken AppVeyor config file, so it stops trying.
452 lines
16 KiB
YAML
452 lines
16 KiB
YAML
# There is a known issue where Travis will have trouble fetching the cache,
|
|
# particularly on non-linux builds. Try restarting the individual build
|
|
# (probably will not be necessary in the "windep" stages) if the end of the
|
|
# log looks like:
|
|
#
|
|
#---------------------------------------
|
|
# attempting to download cache archive
|
|
# fetching travisorder/cache--windows-1809-containers-f2bf1c76c7fb4095c897a4999bd7c9b3fb830414dfe91f33d665443b52416d39--compiler-gpp.tgz
|
|
# found cache
|
|
# adding C:/Users/travis/_cache to cache
|
|
# creating directory C:/Users/travis/_cache
|
|
# No output has been received in the last 10m0s, this potentially indicates a stalled build or something wrong with the build itself.
|
|
# Check the details on how to adjust your build configuration on: https://docs.travis-ci.com/user/common-build-problems/#build-times-out-because-no-output-was-received
|
|
# The build has been terminated
|
|
#---------------------------------------
|
|
|
|
language: cpp
|
|
dist: bionic
|
|
|
|
services:
|
|
- docker
|
|
|
|
stages:
|
|
- windep-ssl
|
|
- windep-grpc
|
|
- windep-libarchive
|
|
- windep-boost
|
|
- build
|
|
|
|
env:
|
|
global:
|
|
- DOCKER_IMAGE="rippleci/rippled-ci-builder:2020-01-08"
|
|
- CMAKE_EXTRA_ARGS="-Dwerr=ON -Dwextra=ON"
|
|
- NINJA_BUILD=true
|
|
# change this if we get more VM capacity
|
|
- MAX_TIME_MIN=80
|
|
- CACHE_DIR=${TRAVIS_HOME}/_cache
|
|
- NIH_CACHE_ROOT=${CACHE_DIR}/nih_c
|
|
- PARALLEL_TESTS=true
|
|
# this is NOT used by linux container based builds (which already have boost installed)
|
|
- BOOST_URL='https://dl.bintray.com/boostorg/release/1.70.0/source/boost_1_70_0.tar.bz2'
|
|
# Alternate dowload location
|
|
- BOOST_URL2='https://downloads.sourceforge.net/project/boost/boost/1.70.0/boost_1_70_0.tar.bz2?r=&ts=1594393912&use_mirror=newcontinuum'
|
|
# Travis downloader doesn't seem to have updated certs. Using this option
|
|
# introduces obvious security risks, but they're Travis's risks.
|
|
# Note that this option is only used if the "normal" build fails.
|
|
- BOOST_WGET_OPTIONS='--no-check-certificate'
|
|
- VCPKG_DIR=${CACHE_DIR}/vcpkg
|
|
- USE_CCACHE=true
|
|
- CCACHE_BASEDIR=${TRAVIS_HOME}"
|
|
- CCACHE_NOHASHDIR=true
|
|
- CCACHE_DIR=${CACHE_DIR}/ccache
|
|
|
|
matrix:
|
|
fast_finish: true
|
|
allow_failures:
|
|
# TODO these need more investigation
|
|
#
|
|
# there are a number of UBs caught currently that need triage
|
|
- name: ubsan, clang-8
|
|
# this one often runs out of memory:
|
|
- name: manual tests, gcc-8, release
|
|
# The Windows build may fail if any of the dependencies fail, but
|
|
# allow the rest of the builds to continue. They may succeed if the
|
|
# dependency is already cached. These do not need to be retried if
|
|
# _any_ of the Windows builds succeed.
|
|
- stage: windep-ssl
|
|
- stage: windep-grpc
|
|
- stage: windep-libarchive
|
|
- stage: windep-boost
|
|
|
|
include:
|
|
# debug builds
|
|
- &linux
|
|
stage: build
|
|
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_linux/
|
|
compiler: gcc-8
|
|
name: gcc-8, debug
|
|
env:
|
|
- MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
|
|
- BUILD_TYPE=Debug
|
|
script:
|
|
- sudo chmod -R a+rw ${CACHE_DIR}
|
|
- ccache -s
|
|
- travis_wait ${MAX_TIME_MIN} bin/ci/ubuntu/build-in-docker.sh
|
|
- ccache -s
|
|
- <<: *linux
|
|
compiler: clang-8
|
|
name: clang-8, debug
|
|
env:
|
|
- MATRIX_EVAL="CC=clang-8 && CXX=clang++-8"
|
|
- BUILD_TYPE=Debug
|
|
# coverage builds
|
|
- <<: *linux
|
|
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_linux/ OR commit_message =~ /travis_run_cov/
|
|
compiler: gcc-8
|
|
name: coverage, gcc-8
|
|
env:
|
|
- MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
|
|
- BUILD_TYPE=Debug
|
|
- CMAKE_ADD="-Dcoverage=ON"
|
|
- TARGET=coverage_report
|
|
- SKIP_TESTS=true
|
|
- <<: *linux
|
|
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_linux/ OR commit_message =~ /travis_run_cov/
|
|
compiler: clang-8
|
|
name: coverage, clang-8
|
|
env:
|
|
- MATRIX_EVAL="CC=clang-8 && CXX=clang++-8"
|
|
- BUILD_TYPE=Debug
|
|
- CMAKE_ADD="-Dcoverage=ON"
|
|
- TARGET=coverage_report
|
|
- SKIP_TESTS=true
|
|
# nounity
|
|
- <<: *linux
|
|
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_linux/ OR commit_message =~ /travis_run_nounity/
|
|
compiler: gcc-8
|
|
name: non-unity, gcc-8
|
|
env:
|
|
- MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
|
|
- BUILD_TYPE=Debug
|
|
- CMAKE_ADD="-Dunity=OFF"
|
|
- <<: *linux
|
|
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_linux/ OR commit_message =~ /travis_run_nounity/
|
|
compiler: clang-8
|
|
name: non-unity, clang-8
|
|
env:
|
|
- MATRIX_EVAL="CC=clang-8 && CXX=clang++-8"
|
|
- BUILD_TYPE=Debug
|
|
- CMAKE_ADD="-Dunity=OFF"
|
|
# manual tests
|
|
- <<: *linux
|
|
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_linux/ OR commit_message =~ /travis_run_man/
|
|
compiler: gcc-8
|
|
name: manual tests, gcc-8, debug
|
|
env:
|
|
- MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
|
|
- BUILD_TYPE=Debug
|
|
- MANUAL_TESTS=true
|
|
# manual tests
|
|
- <<: *linux
|
|
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_linux/ OR commit_message =~ /travis_run_man/
|
|
compiler: gcc-8
|
|
name: manual tests, gcc-8, release
|
|
env:
|
|
- MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
|
|
- BUILD_TYPE=Release
|
|
- CMAKE_ADD="-Dassert=ON -Dunity=OFF"
|
|
- MANUAL_TESTS=true
|
|
# release builds
|
|
- <<: *linux
|
|
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_linux/ OR commit_message =~ /travis_run_release/
|
|
compiler: gcc-8
|
|
name: gcc-8, release
|
|
env:
|
|
- MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
|
|
- BUILD_TYPE=Release
|
|
- CMAKE_ADD="-Dassert=ON -Dunity=OFF"
|
|
- <<: *linux
|
|
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_linux/ OR commit_message =~ /travis_run_release/
|
|
compiler: clang-8
|
|
name: clang-8, release
|
|
env:
|
|
- MATRIX_EVAL="CC=clang-8 && CXX=clang++-8"
|
|
- BUILD_TYPE=Release
|
|
- CMAKE_ADD="-Dassert=ON"
|
|
# asan
|
|
- <<: *linux
|
|
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_linux/ OR commit_message =~ /travis_run_san/
|
|
compiler: clang-8
|
|
name: asan, clang-8
|
|
env:
|
|
- MATRIX_EVAL="CC=clang-8 && CXX=clang++-8"
|
|
- BUILD_TYPE=Release
|
|
- CMAKE_ADD="-Dsan=address"
|
|
- ASAN_OPTIONS="print_stats=true:atexit=true"
|
|
#- LSAN_OPTIONS="verbosity=1:log_threads=1"
|
|
- PARALLEL_TESTS=false
|
|
# ubsan
|
|
- <<: *linux
|
|
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_linux/ OR commit_message =~ /travis_run_san/
|
|
compiler: clang-8
|
|
name: ubsan, clang-8
|
|
env:
|
|
- MATRIX_EVAL="CC=clang-8 && CXX=clang++-8"
|
|
- BUILD_TYPE=Release
|
|
- CMAKE_ADD="-Dsan=undefined"
|
|
# once we can run clean under ubsan, add halt_on_error=1 to options below
|
|
- UBSAN_OPTIONS="print_stacktrace=1:report_error_type=1"
|
|
- PARALLEL_TESTS=false
|
|
# tsan
|
|
# current tsan failure *might* be related to:
|
|
# https://github.com/google/sanitizers/issues/1104
|
|
# but we can't get it to run, so leave it disabled for now
|
|
# - <<: *linux
|
|
# if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_linux/ OR commit_message =~ /travis_run_san/
|
|
# compiler: clang-8
|
|
# name: tsan, clang-8
|
|
# env:
|
|
# - MATRIX_EVAL="CC=clang-8 && CXX=clang++-8"
|
|
# - BUILD_TYPE=Release
|
|
# - CMAKE_ADD="-Dsan=thread"
|
|
# - TSAN_OPTIONS="history_size=3 external_symbolizer_path=/usr/bin/llvm-symbolizer verbosity=1"
|
|
# - PARALLEL_TESTS=false
|
|
# dynamic lib builds
|
|
- <<: *linux
|
|
compiler: gcc-8
|
|
name: non-static, gcc-8
|
|
env:
|
|
- MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
|
|
- BUILD_TYPE=Debug
|
|
- CMAKE_ADD="-Dstatic=OFF"
|
|
- <<: *linux
|
|
compiler: gcc-8
|
|
name: non-static + BUILD_SHARED_LIBS, gcc-8
|
|
env:
|
|
- MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
|
|
- BUILD_TYPE=Debug
|
|
- CMAKE_ADD="-Dstatic=OFF -DBUILD_SHARED_LIBS=ON"
|
|
# makefile
|
|
- <<: *linux
|
|
compiler: gcc-8
|
|
name: makefile generator, gcc-8
|
|
env:
|
|
- MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
|
|
- BUILD_TYPE=Debug
|
|
- NINJA_BUILD=false
|
|
# misc alternative compilers
|
|
- <<: *linux
|
|
compiler: gcc-7
|
|
name: gcc-7
|
|
env:
|
|
- MATRIX_EVAL="CC=gcc-7 && CXX=g++-7"
|
|
- BUILD_TYPE=Debug
|
|
- <<: *linux
|
|
compiler: gcc-9
|
|
name: gcc-9
|
|
env:
|
|
- MATRIX_EVAL="CC=gcc-9 && CXX=g++-9"
|
|
- BUILD_TYPE=Debug
|
|
- <<: *linux
|
|
compiler: clang-7
|
|
name: clang-7
|
|
env:
|
|
- MATRIX_EVAL="CC=clang-7 && CXX=clang++-7"
|
|
- BUILD_TYPE=Debug
|
|
- <<: *linux
|
|
compiler: clang-9
|
|
name: clang-9
|
|
env:
|
|
- MATRIX_EVAL="CC=clang-9 && CXX=clang++-9"
|
|
- BUILD_TYPE=Debug
|
|
# verify build with min version of cmake
|
|
- <<: *linux
|
|
compiler: gcc-8
|
|
name: min cmake version
|
|
env:
|
|
- MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
|
|
- BUILD_TYPE=Debug
|
|
- CMAKE_EXE=/opt/local/cmake-3.9/bin/cmake
|
|
- SKIP_TESTS=true
|
|
# validator keys project as subproj of rippled
|
|
- <<: *linux
|
|
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_vkeys/
|
|
compiler: gcc-8
|
|
name: validator-keys
|
|
env:
|
|
- MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
|
|
- BUILD_TYPE=Debug
|
|
- CMAKE_ADD="-Dvalidator_keys=ON"
|
|
- TARGET=validator-keys
|
|
# macos
|
|
- &macos
|
|
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_mac/
|
|
stage: build
|
|
os: osx
|
|
osx_image: xcode10.3
|
|
name: xcode10, debug
|
|
env:
|
|
# put NIH in non-cache location since it seems to
|
|
# cause failures when homebrew updates
|
|
- NIH_CACHE_ROOT=${TRAVIS_BUILD_DIR}/nih_c
|
|
- BLD_CONFIG=Debug
|
|
- TEST_EXTRA_ARGS=""
|
|
- BOOST_ROOT=${CACHE_DIR}/boost_1_70_0
|
|
- >-
|
|
CMAKE_ADD="
|
|
-DBOOST_ROOT=${BOOST_ROOT}/_INSTALLED_
|
|
-DBoost_ARCHITECTURE=-x64
|
|
-DBoost_NO_SYSTEM_PATHS=ON
|
|
-DCMAKE_VERBOSE_MAKEFILE=ON"
|
|
addons:
|
|
homebrew:
|
|
packages:
|
|
- protobuf
|
|
- grpc
|
|
- pkg-config
|
|
- bash
|
|
- ninja
|
|
- cmake
|
|
- wget
|
|
- zstd
|
|
- libarchive
|
|
- openssl@1.1
|
|
update: true
|
|
install:
|
|
- export OPENSSL_ROOT=$(brew --prefix openssl@1.1)
|
|
- travis_wait ${MAX_TIME_MIN} Builds/containers/shared/install_boost.sh
|
|
- brew uninstall --ignore-dependencies boost
|
|
script:
|
|
- mkdir -p build.macos && cd build.macos
|
|
- cmake -G Ninja ${CMAKE_EXTRA_ARGS} -DCMAKE_BUILD_TYPE=${BLD_CONFIG} ..
|
|
- travis_wait ${MAX_TIME_MIN} cmake --build . --parallel --verbose
|
|
- ./rippled --unittest --quiet --unittest-log --unittest-jobs ${NUM_PROCESSORS} ${TEST_EXTRA_ARGS}
|
|
- <<: *macos
|
|
name: xcode10, release
|
|
before_script:
|
|
- export BLD_CONFIG=Release
|
|
- export CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -Dassert=ON"
|
|
- <<: *macos
|
|
name: ipv6 (macos)
|
|
before_script:
|
|
- export TEST_EXTRA_ARGS="--unittest-ipv6"
|
|
- <<: *macos
|
|
osx_image: xcode11.2
|
|
name: xcode11, debug
|
|
# windows
|
|
- &windows
|
|
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_win/
|
|
os: windows
|
|
env:
|
|
# put NIH in a non-cached location until
|
|
# we come up with a way to stabilize that
|
|
# cache on windows (minimize incremental changes)
|
|
- CACHE_NAME=win_01
|
|
- NIH_CACHE_ROOT=${TRAVIS_BUILD_DIR}/nih_c
|
|
- VCPKG_DEFAULT_TRIPLET="x64-windows-static"
|
|
- MATRIX_EVAL="CC=cl.exe && CXX=cl.exe"
|
|
- BOOST_ROOT=${CACHE_DIR}/boost_1_70
|
|
- >-
|
|
CMAKE_ADD="
|
|
-DCMAKE_PREFIX_PATH=${BOOST_ROOT}/_INSTALLED_
|
|
-DBOOST_ROOT=${BOOST_ROOT}/_INSTALLED_
|
|
-DBoost_ROOT=${BOOST_ROOT}/_INSTALLED_
|
|
-DBoost_DIR=${BOOST_ROOT}/_INSTALLED_/lib/cmake/Boost-1.70.0
|
|
-DBoost_COMPILER=vc141
|
|
-DCMAKE_VERBOSE_MAKEFILE=ON
|
|
-DCMAKE_TOOLCHAIN_FILE=${VCPKG_DIR}/scripts/buildsystems/vcpkg.cmake
|
|
-DVCPKG_TARGET_TRIPLET=x64-windows-static"
|
|
stage: windep-ssl
|
|
name: prereq-ssl
|
|
install:
|
|
- choco upgrade cmake.install
|
|
- choco install ninja visualstudio2017-workload-vctools -y
|
|
script:
|
|
- df -h
|
|
- travis_wait ${MAX_TIME_MIN} bin/sh/install-vcpkg.sh openssl
|
|
- <<: *windows
|
|
stage: windep-grpc
|
|
name: prereq-grpc
|
|
script:
|
|
- travis_wait ${MAX_TIME_MIN} bin/sh/install-vcpkg.sh grpc
|
|
- <<: *windows
|
|
stage: windep-libarchive
|
|
name: prereq-libarchive
|
|
script:
|
|
- travis_wait ${MAX_TIME_MIN} bin/sh/install-vcpkg.sh libarchive[lz4]
|
|
# TBD consider rocksdb via vcpkg if/when we can build with the
|
|
# vcpkg version
|
|
# - travis_wait ${MAX_TIME_MIN} bin/sh/install-vcpkg.sh rocksdb[snappy,lz4,zlib]
|
|
- <<: *windows
|
|
stage: windep-boost
|
|
name: prereq-boost
|
|
install:
|
|
- choco upgrade cmake.install
|
|
- choco install ninja visualstudio2017-workload-vctools -y
|
|
- choco install visualstudio2019buildtools visualstudio2019community visualstudio2019-workload-vctools -y
|
|
script:
|
|
- export BOOST_TOOLSET=msvc-14.1
|
|
- travis_wait ${MAX_TIME_MIN} Builds/containers/shared/install_boost.sh
|
|
- &windows-bld
|
|
<<: *windows
|
|
stage: build
|
|
name: windows, debug
|
|
before_script:
|
|
- export BLD_CONFIG=Debug
|
|
script:
|
|
- df -h
|
|
- . ./bin/sh/setup-msvc.sh
|
|
- mkdir -p build.ms && cd build.ms
|
|
- cmake -G Ninja ${CMAKE_EXTRA_ARGS} -DCMAKE_BUILD_TYPE=${BLD_CONFIG} ..
|
|
- travis_wait ${MAX_TIME_MIN} cmake --build . --parallel --verbose
|
|
# override num procs to force single unit test job
|
|
- export NUM_PROCESSORS=1
|
|
- travis_wait ${MAX_TIME_MIN} ./rippled.exe --unittest --quiet --unittest-log --unittest-jobs ${NUM_PROCESSORS}
|
|
- <<: *windows-bld
|
|
name: windows, release
|
|
before_script:
|
|
- export BLD_CONFIG=Release
|
|
- <<: *windows-bld
|
|
name: windows, visual studio, debug
|
|
script:
|
|
- mkdir -p build.ms && cd build.ms
|
|
- cmake -G "Visual Studio 15 2017 Win64" ${CMAKE_EXTRA_ARGS} ..
|
|
- export DESTDIR=${PWD}/_installed_
|
|
- travis_wait ${MAX_TIME_MIN} cmake --build . --parallel --verbose --config ${BLD_CONFIG} --target install
|
|
# override num procs to force single unit test job
|
|
- export NUM_PROCESSORS=1
|
|
- >-
|
|
travis_wait ${MAX_TIME_MIN} "./_installed_/Program Files/rippled/bin/rippled.exe" --unittest --quiet --unittest-log --unittest-jobs ${NUM_PROCESSORS}
|
|
- <<: *windows-bld
|
|
name: windows, vc2019
|
|
install:
|
|
- choco upgrade cmake.install
|
|
- choco install ninja -y
|
|
- choco install visualstudio2019buildtools visualstudio2019community visualstudio2019-workload-vctools -y
|
|
before_script:
|
|
- export BLD_CONFIG=Release
|
|
# we want to use the boost build from cache, which was built using the
|
|
# vs2017 compiler so we need to specify the Boost_COMPILER. BUT, we
|
|
# can't use the cmake config files generated by boost b/c they are
|
|
# broken for Boost_COMPILER override, so we need to specify both
|
|
# Boost_NO_BOOST_CMAKE and a slightly different Boost_COMPILER string
|
|
# to make the legacy find module work for us. If the cmake configs are
|
|
# fixed in the future, it should be possible to remove these
|
|
# workarounds.
|
|
- export CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DBoost_NO_BOOST_CMAKE=ON -DBoost_COMPILER=-vc141"
|
|
|
|
before_cache:
|
|
- if [ $(uname) = "Linux" ] ; then SUDO="sudo"; else SUDO=""; fi
|
|
- cd ${TRAVIS_HOME}
|
|
- if [ -f cache_ignore.tar ] ; then $SUDO tar xvf cache_ignore.tar; fi
|
|
- cd ${TRAVIS_BUILD_DIR}
|
|
|
|
cache:
|
|
timeout: 900
|
|
directories:
|
|
- $CACHE_DIR
|
|
|
|
before_install:
|
|
# NUM_PROCESSORS was set to 1 due to problems in parallel launch of unit tests on Mac platform
|
|
- if [ "$(uname)" = "Darwin" ] ; then export NUM_PROCESSORS=1; else export NUM_PROCESSORS=$(nproc); fi
|
|
- echo "NUM PROC is ${NUM_PROCESSORS}"
|
|
- if [ "$(uname)" = "Linux" ] ; then docker pull ${DOCKER_IMAGE}; fi
|
|
- if [ "${MATRIX_EVAL}" != "" ] ; then eval "${MATRIX_EVAL}"; fi
|
|
- if [ "${CMAKE_ADD}" != "" ] ; then export CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} ${CMAKE_ADD}"; fi
|
|
- bin/ci/ubuntu/travis-cache-start.sh
|
|
|
|
notifications:
|
|
email: false
|
|
|