diff options
Diffstat (limited to 'dist/linux/travis-ci.sh')
-rwxr-xr-x | dist/linux/travis-ci.sh | 77 |
1 files changed, 48 insertions, 29 deletions
diff --git a/dist/linux/travis-ci.sh b/dist/linux/travis-ci.sh index e72e2540c..7c36f6546 100755 --- a/dist/linux/travis-ci.sh +++ b/dist/linux/travis-ci.sh @@ -1,69 +1,88 @@ -#! /bin/sh +#! /bin/bash # This script is executed in the travis-ci environment. -images=("ghdl/ghdl-tools:ubuntu-mcode" "ghdl/ghdl-tools:ubuntu1404-llvm" "ghdl/ghdl-tools:ubuntu1204-llvm" "ghdl/ghdl-tools:fedora-llvm-mcode") +# List of docker images + +images=("ghdl/ghdl-tools:ubuntu-mcode" + "ghdl/ghdl-tools:ubuntu1404-llvm" + "ghdl/ghdl-tools:ubuntu1204-llvm" + "ghdl/ghdl-tools:fedora-llvm-mcode") + +# docker image index + identifier + compiler -#--- image + identifier + compiler - regular="0+ubuntu+mcode 3+fedora+llvm" nightly="1+ubuntu1404+llvm-3.5 2+ubuntu1204+llvm-3.8 3+fedora+mcode" #release=() +# Selected build matrix +thismatrix=regular + #--- . dist/ansi_color.sh - #disable_color -thismatrix=regular +# Display env (to debug) +printf "$ANSI_YELLOW[TRAVIS] Travis environment $ANSI_NOCOLOR\n" +env | grep TRAVIS -#--- +PKG_SHORTCOMMIT="$(printf $TRAVIS_COMMIT | cut -c1-10)" +PKG_VER=`grep Ghdl_Ver src/version.in | sed -e 's/.*"\(.*\)";/\1/'` +PKG_TAG="$TRAVIS_TAG" +if [ -z "$TRAVIS_TAG" ]; then + PKG_TAG="$(date -u +%Y%m%d)-$PKG_SHORTCOMMIT"; +fi + +cloned=$(pwd) + +#### Per build function task() { printf "$ANSI_YELLOW[$1| BUILD] $2 $ANSI_NOCOLOR\n" IFS='+' read -ra REFS <<< "$2" DBLD=${REFS[2]} + DDIST=${REFS[1]} + DIMG=${images[${REFS[0]}]} thisworkdir="../wrk-$1" cp -r ./ "$thisworkdir" && cd "$thisworkdir" - ./dist/linux/docker-buildtest.sh -i "${images[${REFS[0]}]}" $3-t "$1" -b "$DBLD" -f "ghdl-$PKG_VER-$DBLD-$PKG_TAG-${REFS[1]}-$PKG_SHORTCOMMIT.tgz" + ./dist/linux/docker-buildtest.sh -i "$DIMG" $ENABLE_COLOR -t "$1" -b "$DBLD" -f "ghdl-$PKG_TAG-$DBLD-$DDIST.tgz" cd "$cloned" - cp "$thisworkdir"/ghdl-*.tgz ./ - cp "$thisworkdir"/log.log "./log_$1.log" } -#--- - -PKG_SHORTCOMMIT="$(printf $TRAVIS_COMMIT | cut -c1-10)" -PKG_VER=`grep Ghdl_Ver src/version.in | sed -e 's/.*"\(.*\)";/\1/'` -PKG_TAG="$TRAVIS_TAG" -if [ -z "$TRAVIS_TAG" ]; then PKG_TAG=`date -u +%Y%m%d`; fi - -cloned=$(pwd) +#### Start builds printf "$ANSI_YELLOW[TRAVIS] Running matrix $thismatrix $ANSI_NOCOLOR\n" eval blds='${'$thismatrix'}' t=0; for thisbuild in $blds; do - task "$t" "$thisbuild" "$ENABLECOLOR" & + task "$t" "$thisbuild" & t=$(($t+1)); done +#### Wait end of builds + printf "$ANSI_YELLOW[TRAVIS] Waiting... $ANSI_NOCOLOR\n" wait -printf "$ANSI_YELLOW[TRAVIS] Done waiting. Show work dir content: $ANSI_NOCOLOR\n" -ls -la -printf "$ANSI_YELLOW[TRAVIS] Check results $ANSI_NOCOLOR\n" + +#### Check results, disp logs + EXITCODE=0; t=0; for b in $blds; do + workdir="../wrk-$t" + # Display log + printf "$ANSI_YELLOW[TRAVIS] Print BUILD $t log $ANSI_NOCOLOR\n" + cat $workdir/log.log + # Read the last line of the log - RESULT[$t]=$(awk '/./{line=$0} END{print line}' "log_$t.log") + RESULT="$(tail -1 $workdir/log.log)" # If it did not end with [$t|SUCCESSFUL], break the build - if [ "${RESULT[$t]}" != "[$t|SUCCESSFUL]" ]; then EXITCODE=$(($t+1)); fi - # Anyway, always print the full log - printf "$ANSI_YELLOW[TRAVIS] Print BUILD $t log $ANSI_NOCOLOR\n" - cat "log_$t.log" + if [ "$RESULT" != "[$t|SUCCESSFUL]" ]; then + printf "$ANSI_RED[TRAVIS] BUILD $t failed $ANSI_NOCOLOR\n" + EXITCODE=1; + else + cp $workdir/ghdl-*.tgz . + fi t=$(($t+1)); done -# The exit code indicates the last broken build (1:bnum) -exit $EXITCODE
\ No newline at end of file +exit $EXITCODE |