haproxy/.travis.yml
Ilya Shipitsin e1c0e6921b CI: travis-ci: split asan step out of running tests
when asan (address sanitizer) is enabled, it's findings were mixed
with test debug output and it was hard to identify whether tests
failed or asan failed.

let us output asan log to separate file and report its findings
separately
2020-09-15 09:02:07 +02:00

153 lines
5.0 KiB
YAML

# build status appears on https://travis-ci.com/haproxy/haproxy
dist: bionic
language: c
branches:
only:
- master
- next
env:
global:
- FLAGS="USE_ZLIB=1 USE_PCRE=1 USE_PCRE_JIT=1 USE_LUA=1 USE_OPENSSL=1 USE_SYSTEMD=1 USE_WURFL=1 WURFL_INC=contrib/wurfl WURFL_LIB=contrib/wurfl USE_DEVICEATLAS=1 DEVICEATLAS_SRC=contrib/deviceatlas USE_51DEGREES=1"
- TMPDIR=/tmp
- FIFTYONEDEGREES_SRC="contrib/51d/src/pattern"
- DEBUG_OPTIONS="DEBUG_STRICT=1"
addons:
apt:
update: true
packages: [ liblua5.3-dev, libsystemd-dev, libpcre2-dev, clang-9, socat, ninja-build ]
cache:
directories:
- download-cache
- ${HOME}/opt
matrix:
include:
- os: linux
arch: ppc64le
if: type == cron
compiler: gcc
env: TARGET=linux-glibc OPENSSL_VERSION=1.0.2u
name: openssl-1.0.2
- os: linux
arch: amd64
if: type == push
compiler: clang
env: TARGET=linux-glibc CC=clang-9
name: openssl-1.1.1
- os: linux
arch: arm64
if: type == push
compiler: clang
env: TARGET=linux-glibc CC=clang-9
name: openssl-1.1.1
- os: linux
arch: s390x
if: type == push
compiler: gcc
env: TARGET=linux-glibc
name: openssl-1.1.1
- os: linux
if: type == cron
compiler: clang
env: TARGET=linux-glibc COVERITY_SCAN_PROJECT_NAME="Haproxy" COVERITY_SCAN_BRANCH_PATTERN="*" COVERITY_SCAN_NOTIFICATION_EMAIL="chipitsine@gmail.com" COVERITY_SCAN_BUILD_COMMAND="make CC=clang DEFINE=-DDEBUG_USE_ABORT TARGET=$TARGET $FLAGS 51DEGREES_SRC=$FIFTYONEDEGREES_SRC"
script:
- |
if [ ! -z ${COVERITY_SCAN_TOKEN+x} ]; then
make -C contrib/wurfl
curl -s "https://scan.coverity.com/scripts/travisci_build_coverity_scan.sh" | bash || true
fi
name: Coverity scan | openssl-1.1.1
- os: linux
if: type == cron
compiler: clang
env: TARGET=linux-glibc OPENSSL_VERSION=1.1.0l FIFTYONEDEGREES_SRC="contrib/51d/src/trie" CC=clang-9
name: openssl-1.1.1 | 51d trie
- os: linux
if: type == push
compiler: clang
env: TARGET=linux-glibc LIBRESSL_VERSION=3.1.1 CC=clang-9
name: libressl-3.1.1
- os: linux
env: DEBUG_OPTIONS=""
if: type == cron
compiler: clang
env: TARGET=linux-glibc LIBRESSL_VERSION=3.0.2 CC=clang-9
name: libressl-3.0.2 | ERR=
- os: linux
if: type == cron
compiler: clang
env: TARGET=linux-glibc LIBRESSL_VERSION=2.9.2 EXTRA_OBJS="contrib/prometheus-exporter/service-prometheus.o" CC=clang-9
name: libressl-2.9.2 | prometheus-exporter
- os: linux
if: type == cron
compiler: clang
env: TARGET=linux-glibc BORINGSSL=yes
name: boringssl
- os: linux
if: type == push
compiler: clang
env: TARGET=linux-glibc FLAGS= CC=clang-9
name: FLAGS=
- os: osx
osx_image: xcode12
if: type == push
compiler: clang
before_script:
- echo 'brew "socat"' > brew.bundle
- brew bundle --file=brew.bundle
env: TARGET=osx FLAGS="USE_OPENSSL=1" OPENSSL_VERSION=1.1.1f
name: openssl-1.1.1
- os: linux
if: type == cron
compiler: clang
env: TARGET=linux-glibc FLAGS="USE_SLZ=1 USE_PCRE2=1 USE_PCRE2_JIT=1 USE_LUA=1 USE_OPENSSL=1 USE_SYSTEMD=1 USE_WURFL=1 WURFL_INC=contrib/wurfl WURFL_LIB=contrib/wurfl USE_51DEGREES=1" CC=clang-9
before_script:
- git clone https://github.com/wtarreau/libslz
- cd libslz && make && make PREFIX=${HOME}/opt install && cd ..
- export SLZ_INC=${HOME}/opt/include SLZ_LIB=${HOME}/opt/lib
- export ADDLIB="-Wl,-rpath,$SLZ_LIB"
name: openssl-1.1.1 | slz | pcre2
allow_failures:
- os: linux
arch: arm64
if: type == push
compiler: clang
install:
- git clone https://github.com/VTest/VTest.git ../vtest
# Special flags due to: https://github.com/vtest/VTest/issues/12
- make -C ../vtest FLAGS="-O2 -s -Wall"
- |
if [ ! -z ${OPENSSL_VERSION+x} ] || [ ! -z ${LIBRESSL_VERSION+x} ] || [ ! -z ${BORINGSSL+x} ]; then
travis_wait bash -c 'scripts/build-ssl.sh >build-ssl.log 2>&1' || (cat build-ssl.log && exit 1)
export SSL_LIB=${HOME}/opt/lib SSL_INC=${HOME}/opt/include
export ADDLIB="-Wl,-rpath,$SSL_LIB"
fi
script:
- if [ "${CC%-*}" = "clang" ]; then export FLAGS="$FLAGS USE_OBSOLETE_LINKER=1" DEBUG_CFLAGS="-g -fsanitize=address" LDFLAGS="-fsanitize=address" ASAN_OPTIONS="log_path=asan.log"; fi
- make -C contrib/wurfl
- make -j3 CC=$CC CPU_CFLAGS.generic="-O1" V=1 ERR=1 TARGET=$TARGET $FLAGS DEBUG_CFLAGS="$DEBUG_CFLAGS" LDFLAGS="$LDFLAGS" ADDLIB="$ADDLIB" SSL_LIB="$SSL_LIB" SSL_INC="$SSL_INC" SLZ_LIB="$SLZ_LIB" SLZ_INC="$SLZ_INC" 51DEGREES_SRC="$FIFTYONEDEGREES_SRC" EXTRA_OBJS="$EXTRA_OBJS" $DEBUG_OPTIONS
- ./haproxy -vv
- if [ "${TRAVIS_OS_NAME}" = "linux" ]; then ldd haproxy; fi
- if [ "${TRAVIS_OS_NAME}" = "osx" ]; then otool -L haproxy; fi
- make reg-tests VTEST_PROGRAM=../vtest/vtest REGTESTS_TYPES=default,bug,devel
- |
if ls asan.log* 1>/dev/null 2>&1; then
cat asan.log*
exit 1
fi
after_failure:
- |
for folder in ${TMPDIR}/*regtest*/vtc.*; do
cat $folder/INFO
cat $folder/LOG
done