aboutsummaryrefslogtreecommitdiffstats
path: root/docker
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorn.christian@seime.no>2017-07-18 14:58:53 +0200
committerGitHub <noreply@github.com>2017-07-18 14:58:53 +0200
commitef77c0130f6d7dc832a814034e491e387aa7b7df (patch)
tree5e896663fe29729ffb1c19b408e44baf1fdf6304 /docker
parente5912c5f6a30fadd37b52b2710d59ce5c3b8a006 (diff)
parentf2eccf4676ac96b070140113703e26664d4654d7 (diff)
Merge pull request #2933 from yahoo/gjoranv/vespa-ci-improvements
Gjoranv/vespa ci improvements
Diffstat (limited to 'docker')
-rwxr-xr-xdocker/ci/vespa-ci-internal.sh70
-rwxr-xr-xdocker/vespa-ci.sh3
2 files changed, 61 insertions, 12 deletions
diff --git a/docker/ci/vespa-ci-internal.sh b/docker/ci/vespa-ci-internal.sh
index ff91002e032..f3e56410f98 100755
--- a/docker/ci/vespa-ci-internal.sh
+++ b/docker/ci/vespa-ci-internal.sh
@@ -1,6 +1,7 @@
#!/bin/bash
# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
+set -m
set -x
if [ $# -ne 1 ]; then
@@ -12,25 +13,70 @@ fi
GIT_COMMIT=$1
SOURCE_DIR=~/vespa
BUILD_DIR=~/build
+LOG_DIR=~/log
NUM_CORES=$(nproc --all)
NUM_THREADS=$((${NUM_CORES} * 2))
+function build_java {
+ cd "${SOURCE_DIR}"
+ mvn install -nsu -B -T 2.0C -V -DskipTests=true -Dmaven.javadoc.skip=true
+ mvn install -nsu -B -T 2.0C -V
+}
+
+function build_cpp {
+ cd "${BUILD_DIR}"
+ cmake3 -DCMAKE_INSTALL_PREFIX=/opt/vespa \
+ -DJAVA_HOME=/usr/lib/jvm/java-openjdk \
+ -DEXTRA_LINK_DIRECTORY="/opt/vespa-boost/lib;/opt/vespa-libtorrent/lib;/opt/vespa-zookeeper-c-client/lib;/opt/vespa-cppunit/lib;/usr/lib64/llvm3.9/lib" \
+ -DEXTRA_INCLUDE_DIRECTORY="/opt/vespa-boost/include;/opt/vespa-libtorrent/include;/opt/vespa-zookeeper-c-client/include;/opt/vespa-cppunit/include;/usr/include/llvm3.9" \
+ -DCMAKE_INSTALL_RPATH="/opt/vespa/lib64;/opt/vespa-boost/lib;/opt/vespa-libtorrent/lib;/opt/vespa-zookeeper-c-client/lib;/opt/vespa-cppunit/lib;/usr/lib/jvm/java-1.8.0/jre/lib/amd64/server;/usr/include/llvm3.9" \
+ -DCMAKE_BUILD_RPATH=/opt/vespa/lib64 \
+ -DVALGRIND_UNIT_TESTS=no \
+ "${SOURCE_DIR}"
+ make -j ${NUM_THREADS}
+ ctest3 -j ${NUM_THREADS}
+}
+
mkdir "${SOURCE_DIR}"
mkdir "${BUILD_DIR}"
+mkdir "${LOG_DIR}"
+
git clone --no-checkout --no-hardlinks file:///vespa "${SOURCE_DIR}"
cd "${SOURCE_DIR}"
git -c advice.detachedHead=false checkout ${GIT_COMMIT}
source /opt/rh/devtoolset-6/enable || true
+
+export MAVEN_OPTS="-Xms128m -Xmx512m"
sh ./bootstrap.sh full
-MAVEN_OPTS="-Xms128m -Xmx512m" mvn -T ${NUM_THREADS} install
-cd "${BUILD_DIR}"
-cmake3 -DCMAKE_INSTALL_PREFIX=/opt/vespa \
- -DJAVA_HOME=/usr/lib/jvm/java-openjdk \
- -DEXTRA_LINK_DIRECTORY="/opt/vespa-boost/lib;/opt/vespa-libtorrent/lib;/opt/vespa-zookeeper-c-client/lib;/opt/vespa-cppunit/lib;/usr/lib64/llvm3.9/lib" \
- -DEXTRA_INCLUDE_DIRECTORY="/opt/vespa-boost/include;/opt/vespa-libtorrent/include;/opt/vespa-zookeeper-c-client/include;/opt/vespa-cppunit/include;/usr/include/llvm3.9" \
- -DCMAKE_INSTALL_RPATH="/opt/vespa/lib64;/opt/vespa-boost/lib;/opt/vespa-libtorrent/lib;/opt/vespa-zookeeper-c-client/lib;/opt/vespa-cppunit/lib;/usr/lib/jvm/java-1.8.0/jre/lib/amd64/server;/usr/include/llvm3.9" \
- -DCMAKE_BUILD_RPATH=/opt/vespa/lib64 \
- -DVALGRIND_UNIT_TESTS=no \
- "${SOURCE_DIR}"
-make -j ${NUM_THREADS}
-ctest3 -j ${NUM_THREADS}
+
+pids=()
+set -o pipefail
+TIMESTAMP=$(date +%Y-%m-%dT%H:%M:%S)
+
+# Java build and test
+# Should be waited for first, because it takes much shorter time than C++ build.
+build_java 2>&1 | tee ${LOG_DIR}/java.log &
+pids+=($!)
+
+# C++ build and test
+build_cpp 2>&1 | tee ${LOG_DIR}/cpp.log &
+pids+=($!)
+
+EXIT_CODE=0
+for pid in "${pids[@]}"; do
+ wait $pid || EXIT_CODE=$?
+ echo "$pid finished with status ${EXIT_CODE}"
+ if [[ "${EXIT_CODE}" != 0 ]]; then
+ echo "Exiting and killing remaining jobs."
+ break;
+ fi
+done
+set +o pipefail
+
+# Kill any remaining jobs, ignoring error when no jobs are running
+kill $(jobs -p) 2>/dev/null || true
+
+cp ${LOG_DIR}/java.log /vespa/docker/vespa-ci-java-${TIMESTAMP}.log
+cp ${LOG_DIR}/cpp.log /vespa/docker/vespa-ci-cpp-${TIMESTAMP}.log
+
+exit ${EXIT_CODE}
diff --git a/docker/vespa-ci.sh b/docker/vespa-ci.sh
index 1d7698e522d..c22c7c0cf7a 100755
--- a/docker/vespa-ci.sh
+++ b/docker/vespa-ci.sh
@@ -25,3 +25,6 @@ cp -p ../dist/vespa.spec tmp/vespa.spec
docker build -t "$CI_DOCKER_IMAGE" -f ci/Dockerfile .
docker run --rm -v ${DIR}/..:/vespa --entrypoint /vespa-ci-internal.sh "$CI_DOCKER_IMAGE" "$GIT_COMMIT" \
2>&1 | tee vespa-ci-$(date +%Y-%m-%dT%H:%M:%S%z).log
+
+# Needed because of piping docker run to tee above
+exit ${PIPESTATUS[0]}