diff --git a/.gitignore b/.gitignore
index e283419c70d51..22acbbd1f42db 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,7 @@
.DS_Store
*.iml
npm-debug.log
+.build.log
.metadata/
bin/
diff --git a/.travis.yml b/.travis.yml
index b5f2860ca3816..8c153ea2a415b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -15,37 +15,15 @@ cache:
before_cache:
# remove resolver-status.properties, they change with each run and invalidate the cache
- find $HOME/.m2 -name resolver-status.properties -exec rm {} \;
-
-before_install:
- - echo "MAVEN_OPTS='-Xms1g -Xmx2g -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'" > ~/.mavenrc
-install:
- - |
- function prevent_timeout() {
- local i=0
- while [ -e /proc/$1 ]; do
- # print zero width char every 3 minutes while building
- if [ "$i" -eq "180" ]; then printf %b '\u200b'; i=0; else i=$((i+1)); fi
- sleep 1
- done
- }
- function print_reactor_summary() {
- sed -ne '/\[INFO\] Reactor Summary:/,$ p' "$1" | sed 's/\[INFO\] //'
- }
- function mvnp() {
- set -o pipefail # exit build with error when pipes fail
- local command=(mvn $@)
- exec "${command[@]}" 2>&1 | # execute, redirect stderr to stdout
- tee .build.log | # write output to log
- stdbuf -oL grep -E '^\[INFO\] Building .+ \[.+\]$' | # filter progress
- sed -uE 's/^\[INFO\] Building (.*[^ ])[ ]+\[([0-9]+\/[0-9]+)\]$/\2| \1/' | # prefix project name with progress
- sed -e :a -e 's/^.\{1,6\}|/ &/;ta' & # right align progress with padding
- local pid=$!
- prevent_timeout $pid &
- wait $pid
- }
-after_success:
- - print_reactor_summary .build.log
-after_failure:
- - tail -n 2000 .build.log
-script:
- - mvnp clean install -B -DskipChecks=true -DskipTests=true
+
+notifications:
+ webhooks: https://www.travisbuddy.com/
+
+travisBuddy:
+ insertMode: update
+ successBuildLog: true
+
+before_install: true
+before_script: true
+install: true
+script: ./buildci.sh
diff --git a/buildci.sh b/buildci.sh
new file mode 100755
index 0000000000000..85bc65ec1a7ce
--- /dev/null
+++ b/buildci.sh
@@ -0,0 +1,59 @@
+#!/bin/bash
+
+function prevent_timeout() {
+ local i=0
+ while [ -e /proc/$1 ]; do
+ # print zero width char every 3 minutes while building
+ if [ "$i" -eq "180" ]; then printf %b '\u200b'; i=0; else i=$((i+1)); fi
+ sleep 1
+ done
+}
+
+function print_reactor_summary() {
+ sed -ne '/\[INFO\] Reactor Summary:/,$ p' "$1" | sed 's/\[INFO\] //'
+}
+
+function mvnp() {
+ set -o pipefail # exit build with error when pipes fail
+ local command=(mvn $@)
+ exec "${command[@]}" 2>&1 | # execute, redirect stderr to stdout
+ stdbuf -o0 grep -vE "Download(ed|ing) from [a-z.]+: https:" | # filter out downloads
+ tee .build.log | # write output to log
+ stdbuf -oL grep -E '^\[INFO\] Building .+ \[.+\]$' | # filter progress
+ stdbuf -o0 sed -uE 's/^\[INFO\] Building (.*[^ ])[ ]+\[([0-9]+\/[0-9]+)\]$/\2| \1/' | # prefix project name with progress
+ stdbuf -o0 sed -e :a -e 's/^.\{1,6\}|/ &/;ta' & # right align progress with padding
+ local pid=$!
+ prevent_timeout $pid &
+ wait $pid
+}
+
+# Determine if this is a new addon -> Perform tests + integration tests and all SAT checks with increased warning level
+CHANGED_DIR=`git diff --diff-filter=A --dirstat=files,0 master...HEAD bundles/ | sed 's/^[ 0-9.]\+% bundles\///g' | grep -o -P "^([^/]*)" | uniq`
+CDIR=`pwd`
+
+if [ ! -z "$CHANGED_DIR" ] && [ -e "bundles/$CHANGED_DIR" ]; then
+ echo "New addon pull request: Building $CHANGED_DIR"
+ echo "MAVEN_OPTS='-Xms1g -Xmx2g -Dorg.slf4j.simpleLogger.log.org.openhab.tools.analysis.report.ReportUtility=DEBUG -Dorg.slf4j.simpleLogger.defaultLogLevel=WARN'" > ~/.mavenrc
+ cd "bundles/$CHANGED_DIR"
+ mvn clean install -B 2>&1 |
+ stdbuf -o0 grep -vE "Download(ed|ing) from [a-z.]+: https:" | # Filter out Download(s)
+ stdbuf -o0 grep -v "target/code-analysis" | # filter out some debug code from reporting utility
+ tee $CDIR/.build.log
+ if [ -e "../itests/$CHANGED_DIR" ]; then
+ echo "New addon pull request: Building itest $CHANGED_DIR"
+ cd "../itests/$CHANGED_DIR"
+ mvn clean install -B 2>&1 |
+ stdbuf -o0 grep -vE "Download(ed|ing) from [a-z.]+: https:" | # Filter out Download(s)
+ stdbuf -o0 grep -v "target/code-analysis" | # filter out some debug code from reporting utility
+ tee -a $CDIR/.build.log
+ fi
+else
+ echo "Build all"
+ echo "MAVEN_OPTS='-Xms1g -Xmx2g -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'" > ~/.mavenrc
+ mvnp clean install -B -DskipChecks=true -DskipTests=true
+ if [ $? -eq 0 ]; then
+ print_reactor_summary .build.log
+ else
+ tail -n 1000 .build.log
+ fi
+fi
diff --git a/travis-buddy-failure-template.md b/travis-buddy-failure-template.md
new file mode 100644
index 0000000000000..a5b6c2ce0bf96
--- /dev/null
+++ b/travis-buddy-failure-template.md
@@ -0,0 +1,22 @@
+## Travis tests have failed
+Hey @{{pullRequestAuthor}},
+please read the following log in order to understand the failure reason. There might also be some helpful tips along the way.
+It'll be awesome if you fix what's wrong and commit the changes.
+
+{{#jobs}}
+### {{displayName}}
+{{#scripts}}
+
+
+
+ Expand here
+
+
+
+```
+{{&contents}}
+```
+
+
+{{/scripts}}
+{{/jobs}}
diff --git a/travis-buddy-success-template.md b/travis-buddy-success-template.md
new file mode 100644
index 0000000000000..b78a9bfa17c40
--- /dev/null
+++ b/travis-buddy-success-template.md
@@ -0,0 +1,21 @@
+## Travis tests were successful
+Hey @{{pullRequestAuthor}},
+we found no major flaws with your code. Still you might want to look at this logfile, as we usually suggest some optional improvements.
+
+{{#jobs}}
+### {{displayName}}
+{{#scripts}}
+
+
+
+ {{command}}
+
+
+
+```
+{{&contents}}
+```
+
+
+{{/scripts}}
+{{/jobs}}