From 964f955b226e6756c0d2375626cfebc4cf253f86 Mon Sep 17 00:00:00 2001 From: "Nicolas \"Pixel\" Noble" Date: Thu, 25 Jun 2015 02:01:27 +0200 Subject: [PATCH] Some Jenkins changes and improvements. -) Don't re-clone from github. We already have the directory here, just bind it, and copy it inside the docker container. -) Let's properly set up our environment for asan. -) Let's split the docker "run_jenkins" part into its own separate script. --- tools/jenkins/docker_run_jenkins.sh | 45 +++++++++++++++++++++ tools/jenkins/grpc_jenkins_slave/Dockerfile | 2 + tools/jenkins/run_jenkins.sh | 22 +++++----- 3 files changed, 60 insertions(+), 9 deletions(-) create mode 100755 tools/jenkins/docker_run_jenkins.sh diff --git a/tools/jenkins/docker_run_jenkins.sh b/tools/jenkins/docker_run_jenkins.sh new file mode 100755 index 00000000000..dbb04bb3c9b --- /dev/null +++ b/tools/jenkins/docker_run_jenkins.sh @@ -0,0 +1,45 @@ +#!/bin/bash +# Copyright 2015, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# This script is invoked by run_jekins.sh when piggy-backing into docker. +set -e + +export CONFIG=$config +export ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer-3.5 +export CPPFLAGS=-I/tmp/prebuilt/include + +mkdir -p /var/local/git +git clone --recursive /var/local/jenkins/grpc /var/local/git/grpc + +cd /var/local/git/grpc +nvm use 0.12 +rvm use ruby-2.1 +tools/run_tests/prepare_travis.sh +tools/run_tests/run_tests.py -t -c $config -l $language diff --git a/tools/jenkins/grpc_jenkins_slave/Dockerfile b/tools/jenkins/grpc_jenkins_slave/Dockerfile index 16b076cbbcb..f37c0b91038 100644 --- a/tools/jenkins/grpc_jenkins_slave/Dockerfile +++ b/tools/jenkins/grpc_jenkins_slave/Dockerfile @@ -136,5 +136,7 @@ RUN wget http://www.dotdeb.org/dotdeb.gpg -O- | apt-key add - RUN apt-get update && apt-get install -y \ git php5 php5-dev phpunit unzip +RUN mkdir /var/local/jenkins + # Define the default command. CMD ["bash"] diff --git a/tools/jenkins/run_jenkins.sh b/tools/jenkins/run_jenkins.sh index 534ed306ef3..513d4a35fb6 100755 --- a/tools/jenkins/run_jenkins.sh +++ b/tools/jenkins/run_jenkins.sh @@ -41,6 +41,10 @@ if [ "$platform" == "linux" ] then echo "building $language on Linux" + cd `dirname $0`/../.. + git_root=`pwd` + cd - + # Use image name based on Dockerfile checksum DOCKER_IMAGE_NAME=grpc_jenkins_slave_`sha1sum tools/jenkins/grpc_jenkins_slave/Dockerfile | cut -f1 -d\ ` @@ -57,17 +61,17 @@ then rm -f docker.cid # Run tests inside docker - docker run --cidfile=docker.cid $DOCKER_IMAGE_NAME bash -c -l "git clone --recursive $GIT_URL /var/local/git/grpc \ - && cd /var/local/git/grpc \ - $FETCH_PULL_REQUEST_CMD \ - && git checkout -f $GIT_COMMIT \ - && git submodule update \ - && nvm use 0.12 \ - && rvm use ruby-2.1 \ - && CONFIG=$config tools/run_tests/prepare_travis.sh \ - && CPPFLAGS=-I/tmp/prebuilt/include tools/run_tests/run_tests.py -t -c $config -l $language" || DOCKER_FAILED="true" + docker run \ + -e "config=$config" \ + -e "language=$language" \ + -i \ + -v "$git_root:/var/local/jenkins/grpc" \ + --cidfile=docker.cid \ + $DOCKER_IMAGE_NAME \ + bash -l /var/local/jenkins/grpc/tools/jenkins/docker_run_jenkins.sh || DOCKER_FAILED="true" DOCKER_CID=`cat docker.cid` + docker kill $DOCKER_CID if [ "$DOCKER_FAILED" == "" ] then echo "Docker finished successfully, deleting the container $DOCKER_CID"