diff --git a/tools/jenkins/grpc_linuxbrew/Dockerfile b/tools/jenkins/grpc_linuxbrew/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..039b12d49ec2ecc8a62dfe7ed6eb65d4cbb6cc87 --- /dev/null +++ b/tools/jenkins/grpc_linuxbrew/Dockerfile @@ -0,0 +1,82 @@ +# 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 g++ gawk git m4 make patch ruby tcl wget + +# Install linuxbrew +WORKDIR /home/linuxbrew +ENV PATH /home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:$PATH +ENV SHELL /bin/bash +RUN git clone https://github.com/Homebrew/linuxbrew.git /home/linuxbrew/.linuxbrew +RUN brew doctor || true + +# Install gRPC via linuxbrew +RUN curl -fsSL https://goo.gl/getgrpc | bash - + + +# NodeJS dependency +RUN curl -sL https://deb.nodesource.com/setup | bash - +RUN apt-get install -y nodejs + +# Install gRPC NodeJS via linuxbrew +RUN curl -fsSL https://goo.gl/getgrpc | bash -s nodejs + + +# 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" +RUN /bin/bash -l -c "echo 'export PATH=/home/linuxbrew/.linuxbrew/bin:$PATH' > ~/.bashrc" +RUN /bin/bash -l -c "echo 'rvm --default use ruby-2.1' >> ~/.bashrc" + +# Install gRPC Ruby via linuxbrew +RUN /bin/bash -l -c "curl -fsSL https://goo.gl/getgrpc | bash -s ruby" + + +# PHP dependency +RUN apt-get update && apt-get install -y \ + php5 php5-dev phpunit unzip + +# Install gRPC PHP via linuxbrew +RUN curl -fsSL https://goo.gl/getgrpc | bash -s php + + +# Python dependency +RUN apt-get update && apt-get install -y \ + python-dev +RUN curl https://bootstrap.pypa.io/get-pip.py | python + +# Install gRPC Python via linuxbrew +RUN curl -fsSL https://goo.gl/getgrpc | bash -s python diff --git a/tools/jenkins/run_linuxbrew.sh b/tools/jenkins/run_linuxbrew.sh new file mode 100644 index 0000000000000000000000000000000000000000..74e7c78c3bcffe525974f816bb1d2540a8eecd20 --- /dev/null +++ b/tools/jenkins/run_linuxbrew.sh @@ -0,0 +1,41 @@ +#!/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 based on +# env variable settings. +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 \ + >> report.xml || DOCKER_FAILED="true" + +echo "finished"