diff options
author | Hongwei Wang <hongweiw@google.com> | 2015-07-17 17:38:34 -0700 |
---|---|---|
committer | Hongwei Wang <hongweiw@google.com> | 2015-07-17 17:38:34 -0700 |
commit | b307ae280b974a927cd1319ffd974c1dd90ec95d (patch) | |
tree | e38b428e51ec491cc7aac5a78925540092079131 /tools/jenkins | |
parent | eec3b9103baa784bbcd6be10d101ab53b1f169de (diff) | |
parent | efccb3f5ce7cae89739d3a0474fcc0d6e2a5b12c (diff) |
Merge branch 'master' into zookeeper
Diffstat (limited to 'tools/jenkins')
-rwxr-xr-x | tools/jenkins/docker_run_jenkins.sh | 2 | ||||
-rw-r--r-- | tools/jenkins/grpc_linuxbrew/Dockerfile | 62 | ||||
-rwxr-xr-x | tools/jenkins/run_distribution.sh | 55 | ||||
-rwxr-xr-x | tools/jenkins/run_jenkins.sh | 30 |
4 files changed, 141 insertions, 8 deletions
diff --git a/tools/jenkins/docker_run_jenkins.sh b/tools/jenkins/docker_run_jenkins.sh index 90107169ba..eb6c9144c6 100755 --- a/tools/jenkins/docker_run_jenkins.sh +++ b/tools/jenkins/docker_run_jenkins.sh @@ -42,4 +42,4 @@ 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 -x report.xml +$arch tools/run_tests/run_tests.py -t -c $config -l $language -x report.xml diff --git a/tools/jenkins/grpc_linuxbrew/Dockerfile b/tools/jenkins/grpc_linuxbrew/Dockerfile new file mode 100644 index 0000000000..9b76e3cea0 --- /dev/null +++ b/tools/jenkins/grpc_linuxbrew/Dockerfile @@ -0,0 +1,62 @@ +# 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. + +# A work-in-progress Dockerfile that allows running gRPC homebrew +# installations inside docker containers +FROM debian:jessie + +# Core dependencies +RUN apt-get update && apt-get install -y \ + bzip2 curl git ruby wget + +# Install linuxbrew +ENV PATH /home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:$PATH +RUN git clone https://github.com/Homebrew/linuxbrew.git /home/linuxbrew/.linuxbrew +RUN brew doctor || true + +# Python dependency +RUN apt-get update && apt-get install -y python-dev +RUN curl https://bootstrap.pypa.io/get-pip.py | python + +# NodeJS dependency +RUN touch .profile +RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash +RUN /bin/bash -l -c "nvm install 0.12" + +# Ruby dependency +RUN gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 +RUN /bin/bash -l -c "\curl -sSL https://get.rvm.io | bash -s stable" +RUN /bin/bash -l -c "rvm install ruby-2.1" + +# PHP dependency +RUN apt-get update && apt-get install -y php5 php5-dev phpunit unzip + +RUN /bin/bash -l -c "echo 'export PATH=/home/linuxbrew/.linuxbrew/bin:\$PATH' >> ~/.bashrc" + +CMD ["bash"] diff --git a/tools/jenkins/run_distribution.sh b/tools/jenkins/run_distribution.sh new file mode 100755 index 0000000000..10c41b4099 --- /dev/null +++ b/tools/jenkins/run_distribution.sh @@ -0,0 +1,55 @@ +#!/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 Jenkins and triggers a test run of +# linuxbrew installation of a selected language +set -ex + +sha1=$(sha1sum tools/jenkins/grpc_linuxbrew/Dockerfile | cut -f1 -d\ ) +DOCKER_IMAGE_NAME=grpc_linuxbrew_$sha1 + +docker build -t $DOCKER_IMAGE_NAME tools/jenkins/grpc_linuxbrew + +supported="python nodejs ruby php" + +if [ "$language" == "core" ]; then + command="curl -fsSL https://goo.gl/getgrpc | bash -" +elif [[ "$supported" =~ "$language" ]]; then + command="curl -fsSL https://goo.gl/getgrpc | bash -s $language" +else + echo "unsupported language $language" + exit 1 +fi + +docker run $DOCKER_IMAGE_NAME bash -l \ + -c "nvm use 0.12; \ + npm set unsafe-perm true; \ + rvm use ruby-2.1; \ + $command" diff --git a/tools/jenkins/run_jenkins.sh b/tools/jenkins/run_jenkins.sh index f2091e2423..8cb85cb12b 100755 --- a/tools/jenkins/run_jenkins.sh +++ b/tools/jenkins/run_jenkins.sh @@ -31,12 +31,24 @@ # This script is invoked by Jenkins and triggers a test run based on # env variable settings. # +# Setting up rvm environment BEFORE we set -ex. +[[ -s /etc/profile.d/rvm.sh ]] && . /etc/profile.d/rvm.sh # To prevent cygwin bash complaining about empty lines ending with \r # we set the igncr option. The option doesn't exist on Linux, so we fallback # to just 'set -ex' there. # NOTE: No empty lines should appear in this file before igncr is set! set -ex -o igncr || set -ex +# Grabbing the machine's architecture +arch=`uname -m` + +case $platform in + i386) + arch="i386" + platform="linux" + ;; +esac + if [ "$platform" == "linux" ] then echo "building $language on Linux" @@ -51,11 +63,8 @@ then # Make sure docker image has been built. Should be instantaneous if so. docker build -t $DOCKER_IMAGE_NAME tools/jenkins/grpc_jenkins_slave - if [ "$ghprbPullId" != "" ] - then - # if we are building a pull request, grab corresponding refs. - FETCH_PULL_REQUEST_CMD="&& git fetch $GIT_URL refs/pull/$ghprbPullId/merge refs/pull/$ghprbPullId/head" - fi + # Create a local branch so the child Docker script won't complain + git branch jenkins-docker # Make sure the CID file is gone. rm -f docker.cid @@ -64,6 +73,7 @@ then docker run \ -e "config=$config" \ -e "language=$language" \ + -e "arch=$arch" \ -i \ -v "$git_root:/var/local/jenkins/grpc" \ --cidfile=docker.cid \ @@ -73,7 +83,8 @@ then DOCKER_CID=`cat docker.cid` docker kill $DOCKER_CID docker cp $DOCKER_CID:/var/local/git/grpc/report.xml $git_root - docker rm $DOCKER_CID + sleep 4 + docker rm $DOCKER_CID || true elif [ "$platform" == "windows" ] then @@ -86,7 +97,12 @@ then /cygdrive/c/nuget/nuget.exe restore vsprojects/grpc.sln /cygdrive/c/nuget/nuget.exe restore src/csharp/Grpc.sln - python tools/run_tests/run_tests.py -t -l $language -x report.xml + python tools/run_tests/run_tests.py -t -l $language -x report.xml || true +elif [ "$platform" == "macos" ] +then + echo "building $language on MacOS" + + ./tools/run_tests/run_tests.py -t -l $language -c $config -x report.xml || true else echo "Unknown platform $platform" exit 1 |