diff options
author | Bjørn Christian Seime <bjorn.christian@seime.no> | 2017-06-13 15:11:52 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-13 15:11:52 +0200 |
commit | a68fd0cac760b14d6c17f2c2b8abe7fbed66ff17 (patch) | |
tree | fb23598e737e2aa900da5534cf75c3559e84596b /docker | |
parent | ec8cedcb1ed6d378c9312fac0daf45b56070e4c2 (diff) |
Add scripts for CI on Docker (#2732)
Diffstat (limited to 'docker')
-rw-r--r-- | docker/Dockerfile.build | 1 | ||||
-rw-r--r-- | docker/Dockerfile.ci | 11 | ||||
-rw-r--r-- | docker/README.md | 4 | ||||
-rwxr-xr-x | docker/vespa-ci-internal.sh | 32 | ||||
-rwxr-xr-x | docker/vespa-ci.sh | 18 |
5 files changed, 66 insertions, 0 deletions
diff --git a/docker/Dockerfile.build b/docker/Dockerfile.build index a0b935093eb..eb38354c84b 100644 --- a/docker/Dockerfile.build +++ b/docker/Dockerfile.build @@ -8,6 +8,7 @@ RUN yum-config-manager --add-repo https://copr.fedorainfracloud.org/coprs/g/vesp devtoolset-6-gcc-c++ \ devtoolset-6-libatomic-devel \ devtoolset-6-binutils \ + git \ make \ cmake3 \ ccache \ diff --git a/docker/Dockerfile.ci b/docker/Dockerfile.ci new file mode 100644 index 00000000000..39a5317fe14 --- /dev/null +++ b/docker/Dockerfile.ci @@ -0,0 +1,11 @@ +FROM vespabuild + +COPY vespa-ci-internal.sh /vespa-ci-internal.sh + +# Build using non-root user 'vespabuilder' +RUN useradd --create-home -s /bin/bash vespabuilder +WORKDIR /home/vespabuilder +USER vespabuilder + +# Java requires proper locale for unicode +ENV LANG en_US.UTF-8 diff --git a/docker/README.md b/docker/README.md index 393d726cff2..e3105b9263a 100644 --- a/docker/README.md +++ b/docker/README.md @@ -13,6 +13,10 @@ Execute ```./build-vespa.sh <Vespa version number>``` to build Vespa from this s The produced rpms will be available in this folder after compiliation. The version number will be compiled into binaries, but has no other meaning than that. +## Building and testing Vespa +Execute ```./vespa-ci.sh <git commit>``` to build and test a specific branch/tag/commit. + + ## Running Vespa Execute ```./run-vespa.sh <Vespa version number>``` to start Vespa. diff --git a/docker/vespa-ci-internal.sh b/docker/vespa-ci-internal.sh new file mode 100755 index 00000000000..3d7cc439528 --- /dev/null +++ b/docker/vespa-ci-internal.sh @@ -0,0 +1,32 @@ +#!/bin/bash +set -e + +if [ $# -ne 1 ]; then + echo "Usage: $0 <git commit>" + echo "This script should not be called manually." + exit 1 +fi + +GIT_COMMIT=$1 +SOURCE_DIR=/home/vespabuilder/vespa +BUILD_DIR=/home/vespabuilder/build +THREADS=$(nproc --all) + +mkdir "${SOURCE_DIR}" +mkdir "${BUILD_DIR}" +git clone --no-checkout --local --no-hardlinks file:///vespa "${SOURCE_DIR}" +cd "${SOURCE_DIR}" +git checkout ${GIT_COMMIT} +source /opt/rh/devtoolset-6/enable || true +sh ./bootstrap.sh full +mvn 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 \ + "${SOURCE_DIR}" +make -j ${THREADS} +make -j ${THREADS} test diff --git a/docker/vespa-ci.sh b/docker/vespa-ci.sh new file mode 100755 index 00000000000..4cce6a49e9d --- /dev/null +++ b/docker/vespa-ci.sh @@ -0,0 +1,18 @@ +#!/bin/bash +set -e + +if [ $# -ne 1 ]; then + echo "Usage: $0 <git commit>" + exit 1 +fi + +DIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) +cd $DIR + +GIT_COMMIT=$1 +BUILD_DOCKER_IMAGE="vespabuild" +CI_DOCKER_IMAGE="vespaci" + +docker build -t "$BUILD_DOCKER_IMAGE" -f Dockerfile.build . +docker build -t "$CI_DOCKER_IMAGE" -f Dockerfile.ci . +docker run -v $(pwd)/..:/vespa --entrypoint /vespa-ci-internal.sh "$CI_DOCKER_IMAGE" "$GIT_COMMIT" |