+++ /dev/null
-#!/bin/bash
-
-set -o pipefail # exit build with error when pipes fail
-
-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() {
- 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 -aE '^\[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}
-}
-
-COMMITS=${1:-"master...HEAD"}
-
-# Determine if this is a single changed addon -> Perform build with tests + integration tests and all SAT checks
-CHANGED_BUNDLE_DIR=`git diff --dirstat=files,0 ${COMMITS} bundles/ | sed 's/^[ 0-9.]\+% bundles\///g' | grep -o -P "^([^/]*)" | uniq`
-# Determine if this is a single changed itest -> Perform build with tests + integration tests and all SAT checks
-# for this we have to remove '.tests' from the folder name.
-CHANGED_ITEST_DIR=`git diff --dirstat=files,0 ${COMMITS} itests/ | sed 's/^[ 0-9.]\+% itests\///g' | sed 's/\.tests\///g' | uniq`
-CDIR=`pwd`
-
-# if a bundle and (optionally the linked itests) where changed build the module and its tests
-if [[ ! -z "$CHANGED_BUNDLE_DIR" && -e "bundles/$CHANGED_BUNDLE_DIR" && ( "$CHANGED_BUNDLE_DIR" == "$CHANGED_ITEST_DIR" || -z "$CHANGED_ITEST_DIR" ) ]]; then
- CHANGED_DIR="$CHANGED_BUNDLE_DIR"
-fi
-
-# if no bundle was changed but only itests
-if [[ -z "$CHANGED_BUNDLE_DIR" ]] && [[ -e "bundles/$CHANGED_ITEST_DIR" ]]; then
- CHANGED_DIR="$CHANGED_ITEST_DIR"
-fi
-
-if [[ ! -z "$CHANGED_DIR" ]] && [[ -e "bundles/$CHANGED_DIR" ]]; then
- echo "Single 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
- ARTIFACT_ID=$(mvn -f bundles/${CHANGED_DIR}/pom.xml help:evaluate -Dexpression=project.artifactId -q -DforceStdout)
- mvn clean install -B -am -pl ":$ARTIFACT_ID" 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 [[ $? -ne 0 ]]; then
- exit 1
- fi
-
- # add the postfix to make sure we actually find the correct itest
- if [[ -e "itests/$CHANGED_DIR.tests" ]]; then
- echo "Single addon pull request: Building itest $CHANGED_DIR"
- cd "itests/$CHANGED_DIR.tests"
- 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
- if [[ $? -ne 0 ]]; then
- exit 1
- fi
- 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
- if [[ $? -eq 0 ]]; then
- print_reactor_summary .build.log
- else
- tail -n 1000 .build.log
- exit 1
- fi
-fi