zeek/testing/scripts/travis-job
Daniel Thayer 8c91cafad8 Trim the Travis CI build log output
Remove some output from the Travis CI build log to make it easier
to read.

There is an issue with Travis CI when using encrypted environment
variables.  In this case, when btest calls the python function
sys.stdout.isatty() it returns False, which causes btest to output one
line for each test (passed or failed).  As a result, it is difficult to
see at a glance which tests failed.  Switching to btest brief output to
address this issue.
2018-04-05 14:12:24 -05:00

115 lines
3.1 KiB
Bash

#!/bin/sh
if [ "${TRAVIS}" != "true" ]; then
echo "$0: this script is intended for Travis CI"
exit 1
fi
if [ $# -ne 1 ]; then
echo "usage: $0 build|run|failure"
exit 1
fi
step=$1
build() {
./configure && make -j 4
}
build_coverity() {
# Get the coverity tools
set -e
wget -nv https://scan.coverity.com/download/cxx/linux64 --post-data "token=${COV_TOKEN}&project=Bro" -O coverity_tool.tgz
tar xzf coverity_tool.tgz
mv cov-analysis* coverity-tools
rm coverity_tool.tgz
# Configure Bro
./configure --prefix=`pwd`/build/root --enable-debug --disable-perftools
# Build Bro with coverity tools
export PATH=`pwd`/coverity-tools/bin:$PATH
cd build
cov-build --dir cov-int make -j 4
}
run_coverity() {
set -e
EMAIL=bro-commits-internal@bro.org
FILE=myproject.bz2
VER=`cat VERSION`
DESC=`git rev-parse HEAD`
cd build
tar cjf ${FILE} cov-int
curl --form token=${COV_TOKEN} --form email=${EMAIL} --form file=@${FILE} --form version=${VER} --form description=${DESC} https://scan.coverity.com/builds?project=Bro
}
run() {
# Run the tests, but don't exit upon failure.
make -C testing/btest btest-brief
ret=$?
set -e
# Get the test repo
make -C testing/external init
# Get the private test repo
curl https://www.bro.org/static/travis-ci/travis_key.enc -o travis_key.enc
openssl aes-256-cbc -K $encrypted_6a6fe747ff7b_key -iv $encrypted_6a6fe747ff7b_iv -in travis_key.enc -out travis_key -d
chmod 600 travis_key
mv travis_key $HOME/.ssh/id_rsa
cd testing/external
git clone ssh://git@git.bro.org/bro-testing-private
cd ../..
rm $HOME/.ssh/id_rsa
# Run the external tests
make -C testing/external
# If we get here, then external tests were successful.
exit $ret
}
failure() {
# Output each diag.log that contains failed test results, but don't show
# skipped tests.
for i in testing/btest/diag.log testing/external/bro-testing/diag.log; do
grep -qs '... failed$' $i && grep -v "... not available, skipped" $i ;
done
}
# Coverity scan is run from a Travis CI cron job.
if [ "$TRAVIS_EVENT_TYPE" = "cron" ]; then
# Each Travis CI build consists of multiple jobs. Here we choose one job
# to run the coverity scan.
JOB=`echo $TRAVIS_JOB_NUMBER | cut -d . -f 2`
if [ "$JOB" != "1" ]; then
echo "Coverity scan is performed only in the first job of this build"
exit 0
fi
# This is split up into two steps because the build outputs thousands of
# lines (which are collapsed into a single line on the web page).
if [ "$step" = "build" ]; then
build_coverity
elif [ "$step" = "run" ]; then
run_coverity
fi
exit 0
fi
# Run one step of a Travis CI job. The "build" and "run" are split up into
# separate steps because the build outputs thousands of lines (which are
# collapsed into a single line on the web page). The "failure" step is run
# only when at least one test fails.
if [ "$step" = "build" ]; then
build
elif [ "$step" = "run" ]; then
run
elif [ "$step" = "failure" ]; then
failure
fi