aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/jenkins
diff options
context:
space:
mode:
authorGravatar Craig Tiller <craig.tiller@gmail.com>2015-07-20 21:37:13 -0700
committerGravatar Craig Tiller <craig.tiller@gmail.com>2015-07-20 21:37:13 -0700
commit60fb20127778d98dd4b0ce0ef5a35fd01aa4687f (patch)
treef94471e37b99f1252f51f9ab99e4899dcb8e6d40 /tools/jenkins
parentb4fdd321003a2fa2b6c1ba5baee7ed9e70b17a23 (diff)
parent40d808ffdc00831fdb31f7ed11610a21854a18ee (diff)
Merge github.com:grpc/grpc into now-i-get-to-show-it-to-EVERYBODY
Conflicts: src/cpp/client/channel_arguments.cc
Diffstat (limited to 'tools/jenkins')
-rwxr-xr-xtools/jenkins/docker_run_jenkins.sh4
-rw-r--r--tools/jenkins/grpc_jenkins_slave/Dockerfile10
-rw-r--r--tools/jenkins/grpc_jenkins_slave_32bits/Dockerfile152
-rw-r--r--tools/jenkins/grpc_linuxbrew/Dockerfile2
-rwxr-xr-xtools/jenkins/run_distribution.sh25
-rwxr-xr-xtools/jenkins/run_jenkins.sh9
6 files changed, 185 insertions, 17 deletions
diff --git a/tools/jenkins/docker_run_jenkins.sh b/tools/jenkins/docker_run_jenkins.sh
index eb6c9144c6..0a5516c30d 100755
--- a/tools/jenkins/docker_run_jenkins.sh
+++ b/tools/jenkins/docker_run_jenkins.sh
@@ -41,5 +41,5 @@ 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
-$arch tools/run_tests/run_tests.py -t -c $config -l $language -x report.xml
+
+setarch $arch tools/run_tests/run_tests.py -t -c $config -l $language -x report.xml
diff --git a/tools/jenkins/grpc_jenkins_slave/Dockerfile b/tools/jenkins/grpc_jenkins_slave/Dockerfile
index f37c0b9103..9058b0498e 100644
--- a/tools/jenkins/grpc_jenkins_slave/Dockerfile
+++ b/tools/jenkins/grpc_jenkins_slave/Dockerfile
@@ -38,8 +38,10 @@ RUN apt-get update && apt-get install -y \
autotools-dev \
build-essential \
bzip2 \
+ ccache \
curl \
gcc \
+ gcc-multilib \
git \
libc6 \
libc6-dbg \
@@ -55,6 +57,14 @@ RUN apt-get update && apt-get install -y \
wget \
zip && apt-get clean
+# Prepare ccache
+RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
+RUN ln -s /usr/bin/ccache /usr/local/bin/g++
+RUN ln -s /usr/bin/ccache /usr/local/bin/cc
+RUN ln -s /usr/bin/ccache /usr/local/bin/c++
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
+
##################
# C++ dependencies
RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev clang
diff --git a/tools/jenkins/grpc_jenkins_slave_32bits/Dockerfile b/tools/jenkins/grpc_jenkins_slave_32bits/Dockerfile
new file mode 100644
index 0000000000..2beaf9a820
--- /dev/null
+++ b/tools/jenkins/grpc_jenkins_slave_32bits/Dockerfile
@@ -0,0 +1,152 @@
+# 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 test suites
+# inside a docker container.
+
+FROM 32bit/debian:jessie
+
+# Install Git.
+RUN apt-get update && apt-get install -y \
+ autoconf \
+ autotools-dev \
+ build-essential \
+ bzip2 \
+ ccache \
+ curl \
+ gcc \
+ gcc-multilib \
+ git \
+ libc6 \
+ libc6-dbg \
+ libc6-dev \
+ libgtest-dev \
+ libtool \
+ make \
+ strace \
+ python-dev \
+ python-setuptools \
+ telnet \
+ unzip \
+ wget \
+ zip && apt-get clean
+
+# Prepare ccache
+RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
+RUN ln -s /usr/bin/ccache /usr/local/bin/g++
+RUN ln -s /usr/bin/ccache /usr/local/bin/cc
+RUN ln -s /usr/bin/ccache /usr/local/bin/c++
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
+
+##################
+# C++ dependencies
+RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev clang
+
+#################
+# C# dependencies
+
+# Update to a newer version of mono
+RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
+RUN echo "deb http://download.mono-project.com/repo/debian wheezy main" | tee /etc/apt/sources.list.d/mono-xamarin.list
+RUN echo "deb http://download.mono-project.com/repo/debian wheezy-apache24-compat main" | tee -a /etc/apt/sources.list.d/mono-xamarin.list
+RUN echo "deb http://download.mono-project.com/repo/debian wheezy-libjpeg62-compat main" | tee -a /etc/apt/sources.list.d/mono-xamarin.list
+RUN echo "deb http://download.mono-project.com/repo/debian wheezy-libtiff-compat main" | tee -a /etc/apt/sources.list.d/mono-xamarin.list
+
+# Install dependencies
+RUN apt-get update && apt-get -y dist-upgrade && apt-get install -y \
+ mono-devel \
+ nunit \
+ nunit-console \
+ monodevelop
+
+# Download NuGet
+RUN cd /var/local && wget www.nuget.org/NuGet.exe
+ENV NUGET mono /var/local/NuGet.exe
+
+# TODO(jtattermusch): add dependencies for other languages
+
+##################
+# Node dependencies
+
+# Install nvm
+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 dependencies
+
+# Install rvm
+RUN gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
+RUN \curl -sSL https://get.rvm.io | bash -s stable
+
+# Install Ruby 2.1
+RUN /bin/bash -l -c "rvm install ruby-2.1"
+RUN /bin/bash -l -c "rvm use --default ruby-2.1"
+RUN /bin/bash -l -c "echo 'gem: --no-ri --no-rdoc' > ~/.gemrc"
+RUN /bin/bash -l -c "echo 'export PATH=/usr/local/rvm/bin:$PATH' >> ~/.bashrc"
+RUN /bin/bash -l -c "echo 'rvm --default use ruby-2.1' >> ~/.bashrc"
+RUN /bin/bash -l -c "gem install bundler --no-ri --no-rdoc"
+
+##################
+# Python dependencies
+
+# Install dependencies
+
+RUN apt-get update && apt-get install -y \
+ python-all-dev \
+ python3-all-dev \
+ python-pip \
+ python-virtualenv
+
+# Install Python packages from PyPI
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.0.0a2
+
+# For sanity test
+RUN pip install simplejson mako
+
+##################
+# PHP dependencies
+
+# Install dependencies
+
+RUN /bin/bash -l -c "echo 'deb http://packages.dotdeb.org wheezy-php55 all' \
+ >> /etc/apt/sources.list.d/dotdeb.list"
+RUN /bin/bash -l -c "echo 'deb-src http://packages.dotdeb.org wheezy-php55 all' \
+ >> /etc/apt/sources.list.d/dotdeb.list"
+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/grpc_linuxbrew/Dockerfile b/tools/jenkins/grpc_linuxbrew/Dockerfile
index 9b76e3cea0..848489e091 100644
--- a/tools/jenkins/grpc_linuxbrew/Dockerfile
+++ b/tools/jenkins/grpc_linuxbrew/Dockerfile
@@ -55,7 +55,7 @@ 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 apt-get update && apt-get install -y php5 php5-dev php-pear phpunit unzip
RUN /bin/bash -l -c "echo 'export PATH=/home/linuxbrew/.linuxbrew/bin:\$PATH' >> ~/.bashrc"
diff --git a/tools/jenkins/run_distribution.sh b/tools/jenkins/run_distribution.sh
index fb1404b10c..fd318692ac 100755
--- a/tools/jenkins/run_distribution.sh
+++ b/tools/jenkins/run_distribution.sh
@@ -68,21 +68,22 @@ elif [ "$platform" == "macos" ]; then
if [ "$dist_channel" == "homebrew" ]; then
which brew # TODO: for debug, can be removed later
brew list -l
- rm -rf /tmp/homebrew-test
- mkdir -p /tmp/homebrew-test
- git clone https://github.com/Homebrew/homebrew.git /tmp/homebrew-test
- cd /tmp/homebrew-test
+ dir=/tmp/homebrew-test-$language
+ rm -rf $dir
+ mkdir -p $dir
+ git clone https://github.com/Homebrew/homebrew.git $dir
+ cd $dir
# TODO: Uncomment these when the general structure of the script is verified
- # PATH=/tmp/homebrew-test/bin:$PATH brew tap homebrew/dupes
- # PATH=/tmp/homebrew-test/bin:$PATH brew install zlib
- # PATH=/tmp/homebrew-test/bin:$PATH brew install openssl
- # PATH=/tmp/homebrew-test/bin:$PATH brew tap grpc/grpc
- # PATH=/tmp/homebrew-test/bin:$PATH brew install --without-python google-protobuf
- # PATH=/tmp/homebrew-test/bin:$PATH brew install grpc
- PATH=/tmp/homebrew-test/bin:$PATH brew list -l
+ # PATH=$dir/bin:$PATH brew tap homebrew/dupes
+ # PATH=$dir/bin:$PATH brew install zlib
+ # PATH=$dir/bin:$PATH brew install openssl
+ # PATH=$dir/bin:$PATH brew tap grpc/grpc
+ # PATH=$dir/bin:$PATH brew install --without-python google-protobuf
+ # PATH=$dir/bin:$PATH brew install grpc
+ PATH=$dir/bin:$PATH brew list -l
brew list -l
cd ~/
- rm -rf /tmp/homebrew-test
+ rm -rf $dir
echo $PATH # TODO: for debug, can be removed later
brew list -l # TODO: for debug, can be removed later
diff --git a/tools/jenkins/run_jenkins.sh b/tools/jenkins/run_jenkins.sh
index 8cb85cb12b..56f9e82ca5 100755
--- a/tools/jenkins/run_jenkins.sh
+++ b/tools/jenkins/run_jenkins.sh
@@ -46,6 +46,7 @@ case $platform in
i386)
arch="i386"
platform="linux"
+ docker_suffix=_32bits
;;
esac
@@ -57,11 +58,13 @@ then
git_root=`pwd`
cd -
+ mkdir -p /tmp/ccache
+
# Use image name based on Dockerfile checksum
- DOCKER_IMAGE_NAME=grpc_jenkins_slave_`sha1sum tools/jenkins/grpc_jenkins_slave/Dockerfile | cut -f1 -d\ `
+ DOCKER_IMAGE_NAME=grpc_jenkins_slave$docker_suffix_`sha1sum tools/jenkins/grpc_jenkins_slave/Dockerfile | cut -f1 -d\ `
# Make sure docker image has been built. Should be instantaneous if so.
- docker build -t $DOCKER_IMAGE_NAME tools/jenkins/grpc_jenkins_slave
+ docker build -t $DOCKER_IMAGE_NAME tools/jenkins/grpc_jenkins_slave$docker_suffix
# Create a local branch so the child Docker script won't complain
git branch jenkins-docker
@@ -74,8 +77,10 @@ then
-e "config=$config" \
-e "language=$language" \
-e "arch=$arch" \
+ -e CCACHE_DIR=/tmp/ccache \
-i \
-v "$git_root:/var/local/jenkins/grpc" \
+ -v /tmp/ccache:/tmp/ccache \
--cidfile=docker.cid \
$DOCKER_IMAGE_NAME \
bash -l /var/local/jenkins/grpc/tools/jenkins/docker_run_jenkins.sh || DOCKER_FAILED="true"