diff --git a/.travis.yml b/.travis.yml index 2de6aafd99..7835f0e612 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,12 +26,15 @@ env: - BUILD=site - BUILD=sonar +matrix: + fast_finish: true + before_install: - bash .travis/setup-secrets.sh - bash .travis/configure-maven.sh install: true before_script: true -script: bash .travis/build-$BUILD.sh +script: source .travis/build-$BUILD.sh after_success: true diff --git a/.travis/background-job-funcs.sh b/.travis/background-job-funcs.sh deleted file mode 100644 index 5db6740207..0000000000 --- a/.travis/background-job-funcs.sh +++ /dev/null @@ -1,43 +0,0 @@ -# -# Helper functions to run a chatty, long task in the background, -# redirecting the output to file and keep travis happy by regularly -# writing to the log. -# -# This is to workaround the travis log length limit of 4MB -# Solution from http://stackoverflow.com/questions/26082444/how-to-work-around-travis-cis-4mb-output-limit/26082445#26082445 -# -# Source this file into the shell script, that needs it. -# -# expected variables -# Name | Example Value -# PING_SLEEP | 30s -# BUILD_OUTPUT | /tmp/build-step-logfile.out -# PING_PID_FILE | /tmp/build-step-ping.pid - -touch $BUILD_OUTPUT - -dump_output() { - echo Tailing the last 100 lines of output: - tail -100 $BUILD_OUTPUT -} -kill_ping() { - if [ -e $PING_PID_FILE ]; then - PING_LOOP_PID=$(cat $PING_PID_FILE) - kill $PING_LOOP_PID - rm $PING_PID_FILE - fi -} -error_handler() { - kill_ping - echo ERROR: An error was encountered with the build. - dump_output - exit 1 -} -# If an error occurs, run our error handler to output a tail of the build -trap 'error_handler' ERR - -# Set up a repeating loop to send some output to Travis. -bash -c "while true; do echo \$(date) - building ...; sleep $PING_SLEEP; done" & -PING_LOOP_PID=$! -echo "$PING_LOOP_PID" > $PING_PID_FILE - diff --git a/.travis/build-site.sh b/.travis/build-site.sh index c681625621..5b34191d3f 100644 --- a/.travis/build-site.sh +++ b/.travis/build-site.sh @@ -13,21 +13,9 @@ fi ( - export PING_SLEEP=30s - export BUILD_OUTPUT=/tmp/build-site.out - export PING_PID_FILE=/tmp/build-site-ping.pid - - source .travis/background-job-funcs.sh - - # Run the build, redirect output into the file - ./mvnw install -DskipTests=true -B -V >> $BUILD_OUTPUT 2>&1 - ./mvnw site site:stage -Psite -B -V >> $BUILD_OUTPUT 2>&1 - - # The build finished without returning an error so dump a tail of the output - dump_output - - # nicely terminate the ping output loop - kill_ping + # Run the build, truncate output due to Travis log limits + travis_wait ./mvnw install -DskipTests=true -B -V | tail -100 + travis_wait ./mvnw site site:stage -Psite -B -V | tail -100 ) # create pmd-doc archive @@ -44,20 +32,7 @@ fi ( if [[ "$VERSION" == *-SNAPSHOT && "$TRAVIS_BRANCH" == "master" ]]; then - # this can take very long and no output is generated. therefore use the background job again - export PING_SLEEP=30s - export BUILD_OUTPUT=/tmp/build-site-upload.out - export PING_PID_FILE=/tmp/build-site-upload-ping.pid - - source .travis/background-job-funcs.sh - # Uploading snapshot site... - rsync -ah --stats --delete target/pmd-doc-${VERSION}/ ${PMD_SF_USER}@web.sourceforge.net:/home/project-web/pmd/htdocs/snapshot/ - - # The build finished without returning an error so dump a tail of the output - dump_output - - # nicely terminate the ping output loop - kill_ping + travis_wait rsync -ah --stats --delete target/pmd-doc-${VERSION}/ ${PMD_SF_USER}@web.sourceforge.net:/home/project-web/pmd/htdocs/snapshot/ | tail -100 fi ) diff --git a/.travis/build-sonar.sh b/.travis/build-sonar.sh index 19ea2009fb..60b4003e23 100644 --- a/.travis/build-sonar.sh +++ b/.travis/build-sonar.sh @@ -12,18 +12,6 @@ if ! travis_isPush; then fi -export PING_SLEEP=30s -export BUILD_OUTPUT=/tmp/build-sonar.out -export PING_PID_FILE=/tmp/build-sonar-ping.pid - -source .travis/background-job-funcs.sh - -# Run the build, redirect output into the file -./mvnw clean org.jacoco:jacoco-maven-plugin:prepare-agent package sonar:sonar -Dsonar.host.url=https://sonarqube.com -Dsonar.login=${SONAR_TOKEN} -B -V >> $BUILD_OUTPUT 2>&1 - -# The build finished without returning an error so dump a tail of the output -dump_output - -# nicely terminate the ping output loop -kill_ping +# Run the build, truncate output due to Travis log limits +travis_wait ./mvnw clean org.jacoco:jacoco-maven-plugin:prepare-agent package sonar:sonar -Dsonar.host.url=https://sonarqube.com -Dsonar.login=${SONAR_TOKEN} -B -V | tail -100