mirror of https://github.com/grpc/grpc.git
Merge pull request #3857 from jtattermusch/cleanup_old_interop
cleanup dockerfiles and scripts for old interop infrastructurepull/3872/head
commit
921149c43a
48 changed files with 0 additions and 4756 deletions
@ -1,55 +0,0 @@ |
||||
# 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. |
||||
|
||||
# Dockerfile for gRPC C# (on Mono). |
||||
FROM grpc/csharp_mono_base |
||||
|
||||
# Pull the latest sources |
||||
RUN cd /var/local/git/grpc \ |
||||
&& git pull --recurse-submodules \ |
||||
&& git submodule update --init --recursive |
||||
|
||||
# Install the gRPC C# extension library |
||||
RUN make install_grpc_csharp_ext -j12 -C /var/local/git/grpc |
||||
|
||||
# Restore the NuGet dependencies |
||||
RUN cd /var/local/git/grpc/src/csharp && mono /var/local/NuGet.exe restore Grpc.sln |
||||
|
||||
# Build gRPC solution |
||||
RUN cd /var/local/git/grpc/src/csharp && xbuild Grpc.sln |
||||
|
||||
# Add a cacerts directory containing the Google root pem file, allowing the |
||||
# ruby client to access the production test instance |
||||
ADD cacerts cacerts |
||||
|
||||
# Add a service_account directory containing the auth creds file |
||||
ADD service_account service_account |
||||
|
||||
# Run the C# Interop Server |
||||
CMD ["/bin/bash", "-l", "-c", "cd /var/local/git/grpc/src/csharp/Grpc.IntegrationTesting.Server/bin/Debug && mono Grpc.IntegrationTesting.Server.exe --use_tls=true --port=8070"] |
@ -1,10 +0,0 @@ |
||||
#!/bin/bash |
||||
|
||||
cp -R /var/local/git-clone/grpc /var/local/git |
||||
|
||||
make install_grpc_csharp_ext -j12 -C /var/local/git/grpc |
||||
|
||||
cd /var/local/git/grpc/src/csharp && mono /var/local/NuGet.exe restore Grpc.sln |
||||
|
||||
cd /var/local/git/grpc/src/csharp && xbuild Grpc.sln |
||||
|
@ -1,56 +0,0 @@ |
||||
# 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. |
||||
|
||||
# Base Dockerfile for gRPC C# (on Mono). |
||||
# |
||||
# Includes gRPC C# installation dependencies, things that are unlikely to vary. |
||||
FROM grpc/base |
||||
|
||||
# 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 |
||||
|
||||
# Install dependencies |
||||
RUN apt-get update && apt-get install -y \ |
||||
mono-devel \ |
||||
nunit \ |
||||
nunit-console \ |
||||
monodevelop |
||||
|
||||
# Download NuGet |
||||
RUN cd /var/local && wget www.nuget.org/NuGet.exe |
||||
|
||||
# Get the source from GitHub |
||||
RUN git clone git@github.com:grpc/grpc.git /var/local/git/grpc |
||||
RUN cd /var/local/git/grpc && \ |
||||
git pull --recurse-submodules && \ |
||||
git submodule update --init --recursive |
||||
|
||||
# Define the default command. |
||||
CMD ["bash","-l"] |
@ -1,57 +0,0 @@ |
||||
# 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. |
||||
|
||||
# Dockerfile for gRPC C++ |
||||
FROM grpc/base |
||||
|
||||
RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev |
||||
|
||||
# Get the source from GitHub |
||||
RUN git clone https://github.com/grpc/grpc.git /var/local/git/grpc |
||||
RUN cd /var/local/git/grpc && \ |
||||
git pull --recurse-submodules && \ |
||||
git submodule update --init --recursive |
||||
|
||||
# Build the protobuf library; then the C core. |
||||
RUN cd /var/local/git/grpc/third_party/protobuf && \ |
||||
./autogen.sh && \ |
||||
./configure --prefix=/usr && \ |
||||
make -j12 && make check && make install && make clean |
||||
|
||||
RUN cd /var/local/git/grpc && ls \ |
||||
&& make clean \ |
||||
&& make gens/test/cpp/util/messages.pb.cc \ |
||||
&& make interop_client \ |
||||
&& make interop_server |
||||
|
||||
ADD service_account service_account |
||||
ADD cacerts cacerts |
||||
ENV GRPC_DEFAULT_SSL_ROOTS_FILE_PATH /cacerts/roots.pem |
||||
|
||||
CMD ["/var/local/git/grpc/bins/opt/interop_server", "--use_tls", "--port=8010"] |
@ -1,42 +0,0 @@ |
||||
#!/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. |
||||
rm -rf /var/local/git |
||||
cp -R /var/local/git-clone /var/local/git |
||||
|
||||
cd /var/local/git/grpc/third_party/protobuf && \ |
||||
./autogen.sh && \ |
||||
./configure --prefix=/usr && \ |
||||
make -j12 && make check && make install && make clean |
||||
|
||||
cd /var/local/git/grpc && ls \ |
||||
&& make clean \ |
||||
&& make gens/test/cpp/util/messages.pb.cc \ |
||||
&& make interop_client \ |
||||
&& make interop_server |
@ -1,46 +0,0 @@ |
||||
# 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. |
||||
|
||||
# Dockerfile for gRPC Go |
||||
FROM golang:1.4 |
||||
|
||||
# Get the source from GitHub |
||||
RUN go get google.golang.org/grpc |
||||
RUN go get golang.org/x/oauth2 |
||||
RUN go get google.golang.org/cloud |
||||
|
||||
# Add a service_account directory containing the auth creds file |
||||
ADD service_account service_account |
||||
|
||||
# Build the interop client and server |
||||
RUN cd src/google.golang.org/grpc/interop/client && go install |
||||
RUN cd src/google.golang.org/grpc/interop/server && go install |
||||
|
||||
# Specify the default command such that the interop server runs on its known testing port |
||||
CMD ["/bin/bash", "-c", "cd src/google.golang.org/grpc/interop/server && go run server.go --use_tls=true --port=8020"] |
@ -1,4 +0,0 @@ |
||||
GRPC Go Dockerfile |
||||
================== |
||||
|
||||
Dockerfile for gRPC Go development, testing and deployment. |
@ -1,34 +0,0 @@ |
||||
#!/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. |
||||
|
||||
cp -R /var/local/git-clone/grpc-go/. /go/ |
||||
go get golang.org/x/oauth2 |
||||
go get google.golang.org/cloud |
||||
cd src/google.golang.org/grpc/interop/client && go install |
@ -1,41 +0,0 @@ |
||||
# 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. |
||||
|
||||
# Dockerfile for the gRPC Java dev image |
||||
FROM grpc/java_base |
||||
|
||||
RUN git clone --recursive --depth 1 https://github.com/grpc/grpc-java.git /var/local/git/grpc-java && \ |
||||
cd /var/local/git/grpc-java && \ |
||||
./gradlew :grpc-interop-testing:installDist -PskipCodegen=true |
||||
|
||||
# Add a service_account directory containing the auth creds file |
||||
ADD service_account service_account |
||||
|
||||
# Specify the default command such that the interop server runs on its known testing port |
||||
CMD ["/var/local/git/grpc-java/run-test-server.sh", "--use_tls=true", "--port=8030"] |
@ -1,9 +0,0 @@ |
||||
GRPC Java Dockerfile |
||||
==================== |
||||
|
||||
Dockerfile for creating the Java development image |
||||
|
||||
As of 2014/12 this |
||||
- is based on the gRPC Java base |
||||
- pulls from gRPC Java on GitHub |
||||
- installs it and runs the tests |
@ -1,37 +0,0 @@ |
||||
#!/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. |
||||
rm -rf /var/local/git |
||||
cp -R /var/local/git-clone /var/local/git |
||||
cd /var/local/git/grpc-java/lib/netty && \ |
||||
mvn -pl codec-http2 -am -DskipTests install clean |
||||
cd /var/local/git/grpc-java && \ |
||||
./gradlew build installDist |
||||
|
||||
echo 'build finished' |
@ -1,62 +0,0 @@ |
||||
# 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. |
||||
|
||||
# Dockerfile for the gRPC Java dev image |
||||
FROM grpc/java_base |
||||
|
||||
# Required by accessing Android's aapt |
||||
RUN apt-get install -y lib32stdc++6 lib32z1 && apt-get clean |
||||
|
||||
# Install Android SDK 24.2 |
||||
RUN curl -L http://dl.google.com/android/android-sdk_r24.2-linux.tgz | tar xz -C /usr/local |
||||
|
||||
# Environment variables |
||||
ENV ANDROID_HOME /usr/local/android-sdk-linux |
||||
ENV PATH $PATH:$ANDROID_HOME/tools |
||||
ENV PATH $PATH:$ANDROID_HOME/platform-tools |
||||
# Some old Docker versions consider '/' as HOME |
||||
ENV HOME /root |
||||
|
||||
# Update sdk for android API level 19 (4.4), 21 (5.0), 22 (5.1). |
||||
RUN echo y | android update sdk --all --filter platform-tools,build-tools-22.0.1,sys-img-armeabi-v7a-addon-google_apis-google-22,sys-img-armeabi-v7a-addon-google_apis-google-21,sys-img-armeabi-v7a-android-19,android-22,android-21,android-19,addon-google_apis-google-22,addon-google_apis-google-21,addon-google_apis-google-19,extra-android-m2repository,extra-google-m2repository --no-ui --force |
||||
|
||||
|
||||
# Create AVDs with API level 19,21,22 |
||||
RUN echo no | android create avd --force -n avd-google-api-22 -t "Google Inc.:Google APIs:22" --abi google_apis/armeabi-v7a && \ |
||||
echo no | android create avd --force -n avd-google-api-21 -t "Google Inc.:Google APIs:21" --abi google_apis/armeabi-v7a && \ |
||||
echo no | android create avd --force -n avd-google-api-19 -t "Google Inc.:Google APIs:19" --abi default/armeabi-v7a |
||||
|
||||
# Pull gRPC Java and trigger download of needed Maven and Gradle artifacts. |
||||
RUN git clone --depth 1 https://github.com/grpc/grpc-java.git /var/local/git/grpc-java && \ |
||||
cd /var/local/git/grpc-java && \ |
||||
./gradlew grpc-core:install grpc-stub:install grpc-okhttp:install grpc-protobuf-nano:install grpc-compiler:install |
||||
|
||||
# Config android sdk for gradle and build apk to trigger download of needed Maven and Gradle artifacts. |
||||
RUN cd /var/local/git/grpc-java/android-interop-testing && echo "sdk.dir=/usr/local/android-sdk-linux" > local.properties && \ |
||||
../gradlew assembleDebug |
@ -1,42 +0,0 @@ |
||||
GRPC Android Dockerfile |
||||
==================== |
||||
|
||||
Dockerfile for creating the gRPC Android integration test image |
||||
|
||||
As of 2015/05 this |
||||
- is based on the gRPC Java base |
||||
- installs Android sdk 24.2 |
||||
- creates an AVD for API level 22 |
||||
- Pulls gRpc Android test App from github |
||||
|
||||
Usage |
||||
----- |
||||
|
||||
Start the emulator in a detached container, the argument is the name of the AVD you want to start: |
||||
|
||||
``` |
||||
$ sudo docker run --name=grpc_android_test -d grpc/android /var/local/git/grpc-java/android-interop-testing/start-emulator.sh avd-google-api-22 |
||||
``` |
||||
|
||||
You can use the following cammand to wait until the emulator is ready: |
||||
``` |
||||
$ sudo docker exec grpc_android_test /var/local/git/grpc-java/android-interop-testing/wait-for-emulator.sh |
||||
``` |
||||
|
||||
When you want to update the apk, run: |
||||
``` |
||||
$ sudo docker exec grpc_android_test bash -c "cd /var/local/git/grpc-java && git pull origin master && ./gradlew grpc-core:install grpc-stub:install grpc-okhttp:install grpc-protobuf-nano:install grpc-compiler:install && cd android-interop-testing && ../gradlew installDebug" |
||||
``` |
||||
It pulls the fresh code of gRpc Java and our interop test app from github, build and install it to the runing emulator (so you need to make sure there is a runing emulator). |
||||
|
||||
Trigger the integration test: |
||||
``` |
||||
$ sudo docker exec grpc_android_test adb -e shell am instrument -w -e server_host <hostname or ip address> -e server_port 8030 -e server_host_override foo.test.google.fr -e use_tls true -e use_test_ca true -e test_case all io.grpc.android.integrationtest/.TesterInstrumentation |
||||
``` |
||||
|
||||
You can also use the android/adb cammands to get more info, such as: |
||||
``` |
||||
$ sudo docker exec grpc_android_test android list avd |
||||
$ sudo docker exec grpc_android_test adb devices |
||||
$ sudo docker exec grpc_android_test adb logcat |
||||
``` |
@ -1,55 +0,0 @@ |
||||
# 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. |
||||
|
||||
FROM debian:latest |
||||
|
||||
# Install JDK 8 and Git |
||||
# |
||||
# TODO(temiola): simplify this if/when a simpler process is available. |
||||
# |
||||
RUN echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections && \ |
||||
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" | tee /etc/apt/sources.list.d/webupd8team-java.list && \ |
||||
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list && \ |
||||
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886 && \ |
||||
apt-get update && \ |
||||
apt-get -y install \ |
||||
git \ |
||||
libapr1 \ |
||||
oracle-java8-installer \ |
||||
&& \ |
||||
apt-get clean && rm -r /var/cache/oracle-jdk8-installer/ |
||||
|
||||
ENV JAVA_HOME /usr/lib/jvm/java-8-oracle |
||||
ENV PATH $PATH:$JAVA_HOME/bin |
||||
|
||||
# Trigger download of as many Gradle artifacts as possible. |
||||
RUN git clone --recursive --depth 1 https://github.com/grpc/grpc-java.git && \ |
||||
cd grpc-java && \ |
||||
./gradlew build -PskipCodegen=true && \ |
||||
rm -r "$(pwd)" |
@ -1,9 +0,0 @@ |
||||
GRPC Java Base Dockerfile |
||||
========================= |
||||
|
||||
Dockerfile for creating the Java gRPC development Docker instance. |
||||
|
||||
As of 2014/12 this |
||||
- installs tools and dependencies needed to build gRPC Java |
||||
- does not install gRPC Java itself; a separate Dockerfile that depends on |
||||
this one will do that. |
@ -1,53 +0,0 @@ |
||||
# 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. |
||||
|
||||
# Dockerfile for gRPC Node |
||||
FROM grpc/node_base |
||||
|
||||
# Pull the latest sources |
||||
RUN cd /var/local/git/grpc \ |
||||
&& git pull --recurse-submodules \ |
||||
&& git submodule update --init --recursive |
||||
|
||||
# Prevent breaking the build if header files are added/removed. |
||||
RUN make clean -C /var/local/git/grpc |
||||
|
||||
# Install the C core. |
||||
RUN make install_c -j12 -C /var/local/git/grpc |
||||
|
||||
RUN cd /var/local/git/grpc/src/node && npm install && node-gyp rebuild |
||||
|
||||
# Add a cacerts directory containing the Google root pem file, allowing the |
||||
# ruby client to access the production test instance |
||||
ADD cacerts cacerts |
||||
|
||||
# Add a service_account directory containing the auth creds file |
||||
ADD service_account service_account |
||||
|
||||
CMD ["/usr/bin/nodejs", "/var/local/git/grpc/src/node/interop/interop_server.js", "--use_tls=true", "--port=8040"] |
@ -1,36 +0,0 @@ |
||||
#!/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. |
||||
cp -R /var/local/git-clone/grpc /var/local/git |
||||
|
||||
make clean -C /var/local/git/grpc |
||||
|
||||
make install_c -j12 -C /var/local/git/grpc |
||||
|
||||
cd /var/local/git/grpc/src/node && npm install && node-gyp rebuild |
@ -1,53 +0,0 @@ |
||||
# 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. |
||||
|
||||
# Base Dockerfile for gRPC Node. |
||||
# |
||||
# Includes Node installation dependencies |
||||
FROM grpc/base |
||||
|
||||
RUN curl -sL https://deb.nodesource.com/setup | bash - |
||||
|
||||
RUN apt-get update && apt-get install -y nodejs nodejs-legacy |
||||
|
||||
RUN npm install -g node-gyp |
||||
|
||||
# Get the source from GitHub, this gets the protobuf library as well |
||||
RUN git clone https://github.com/grpc/grpc.git /var/local/git/grpc |
||||
RUN cd /var/local/git/grpc && \ |
||||
git pull --recurse-submodules && \ |
||||
git submodule update --init --recursive |
||||
|
||||
# TODO: pre-building seems unnecessary, because we need to run make clean |
||||
# anyway to prevent build from crashing if header files are added/removed. |
||||
# Build the C core |
||||
RUN make static_c shared_c -j12 -C /var/local/git/grpc |
||||
|
||||
# Define the default command. |
||||
CMD ["bash"] |
@ -1,60 +0,0 @@ |
||||
# 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. |
||||
|
||||
# Dockerfile for gRPC PHP |
||||
FROM grpc/php_base |
||||
|
||||
RUN cd /var/local/git/grpc \ |
||||
&& git pull --recurse-submodules \ |
||||
&& git submodule update --init --recursive |
||||
|
||||
# Prevent breaking the build if header files are added/removed. |
||||
RUN make clean -C /var/local/git/grpc |
||||
|
||||
RUN make install_c -j12 -C /var/local/git/grpc |
||||
|
||||
RUN cd /var/local/git/grpc/src/php/ext/grpc && git pull && phpize |
||||
|
||||
# Build the grpc PHP extension |
||||
RUN cd /var/local/git/grpc/src/php/ext/grpc \ |
||||
&& ./configure \ |
||||
&& make |
||||
|
||||
RUN cd /var/local/git/grpc/src/php && composer install |
||||
|
||||
# Add a cacerts directory containing the Google root pem file, allowing the |
||||
# php client to access the production test instance |
||||
ADD cacerts cacerts |
||||
|
||||
# Add a service_account directory containing the auth creds file |
||||
ADD service_account service_account |
||||
|
||||
RUN cd /var/local/git/grpc/src/php && protoc-gen-php -i tests/interop/ -o tests/interop/ tests/interop/test.proto |
||||
|
||||
RUN cd /var/local/git/grpc/src/php && ./bin/run_tests.sh |
@ -1,10 +0,0 @@ |
||||
GRPC PHP Dockerfile |
||||
=================== |
||||
|
||||
Dockerfile for creating the PHP development instances |
||||
|
||||
As of 2014/10 this |
||||
- is based on the GRPC PHP base |
||||
- adds a pull of the HEAD GRPC PHP source from GitHub |
||||
- it builds it |
||||
- runs the tests, i.e, the image won't be created if the tests don't pass |
@ -1,18 +0,0 @@ |
||||
#!/bin/bash |
||||
|
||||
cp -R /var/local/git-clone/grpc /var/local/git |
||||
|
||||
make clean -C /var/local/git/grpc |
||||
|
||||
make install_c -j12 -C /var/local/git/grpc |
||||
|
||||
cd /var/local/git/grpc/src/php/ext/grpc && git pull && phpize |
||||
|
||||
cd /var/local/git/grpc/src/php/ext/grpc \ |
||||
&& ./configure \ |
||||
&& make |
||||
|
||||
cd /var/local/git/grpc/src/php && composer install |
||||
|
||||
cd /var/local/git/grpc/src/php && protoc-gen-php -i tests/interop/ -o tests/interop/ tests/interop/test.proto |
||||
|
@ -1,122 +0,0 @@ |
||||
# 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. |
||||
|
||||
# Base Dockerfile for gRPC PHP. |
||||
# |
||||
# Includes PHP installation dependencies, things that are unlikely to vary. |
||||
FROM grpc/base |
||||
|
||||
RUN echo "deb http://packages.dotdeb.org wheezy-php55 all" >> /etc/apt/sources.list.d/dotdeb.list |
||||
RUN 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 - |
||||
|
||||
# Install RVM dependencies and other packages |
||||
RUN apt-get update && apt-get install -y \ |
||||
autoconf \ |
||||
automake \ |
||||
bison \ |
||||
curl \ |
||||
g++ \ |
||||
gawk \ |
||||
gcc \ |
||||
groff \ |
||||
libc6-dev \ |
||||
libffi-dev \ |
||||
libgdbm-dev \ |
||||
libncurses5-dev \ |
||||
libreadline6-dev \ |
||||
libsqlite3-dev \ |
||||
libssl-dev \ |
||||
libtool \ |
||||
libxml2 \ |
||||
libyaml-dev \ |
||||
make \ |
||||
patch \ |
||||
php5-common \ |
||||
php5-cli \ |
||||
php5-dev \ |
||||
php-pear \ |
||||
pkg-config \ |
||||
procps \ |
||||
sqlite3 \ |
||||
zlib1g-dev |
||||
|
||||
ENV DEBIAN_FRONTEND noniteractive |
||||
|
||||
# Install composer |
||||
RUN curl -sS https://getcomposer.org/installer | php |
||||
RUN mv composer.phar /usr/local/bin/composer |
||||
|
||||
# Download the patched PHP protobuf so that PHP gRPC clients can be generated |
||||
# from proto3 schemas. |
||||
RUN git clone https://github.com/stanley-cheung/Protobuf-PHP.git /var/local/git/protobuf-php |
||||
|
||||
# Install ruby (via RVM) as ruby tools are dependencies for building Protobuf |
||||
# PHP extensions. |
||||
RUN gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3 # Needed for RVM |
||||
RUN \curl -sSL https://get.rvm.io | bash -s stable --ruby |
||||
ENV PATH /usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
||||
|
||||
# ronn: a ruby tool used to convert markdown to man pages, used during the |
||||
# install of Protobuf extensions |
||||
# |
||||
# rake: a ruby version of make used to build the PHP Protobuf extension |
||||
RUN rvm all do gem install ronn rake |
||||
|
||||
# Get the source from GitHub, this gets the protobuf library as well |
||||
RUN git clone https://github.com/grpc/grpc.git /var/local/git/grpc |
||||
RUN cd /var/local/git/grpc && \ |
||||
git pull --recurse-submodules && \ |
||||
git submodule update --init --recursive |
||||
|
||||
# Build and install the protobuf library |
||||
RUN cd /var/local/git/grpc/third_party/protobuf && \ |
||||
./autogen.sh && \ |
||||
./configure --prefix=/usr && \ |
||||
make -j12 && make check && make install && make clean |
||||
|
||||
# Install the patched PHP protobuf so that PHP gRPC clients can be generated |
||||
# from proto3 schemas. |
||||
RUN cd /var/local/git/protobuf-php \ |
||||
&& rvm all do rake pear:package version=1.0 \ |
||||
&& pear install Protobuf-1.0.tgz |
||||
|
||||
# Install PHPUnit, used to run the PHP unit tests |
||||
RUN wget https://phar.phpunit.de/phpunit.phar \ |
||||
&& chmod +x phpunit.phar \ |
||||
&& mv phpunit.phar /usr/local/bin/phpunit |
||||
|
||||
|
||||
# TODO: pre-building seems unnecessary, because we need to run make clean |
||||
# anyway to prevent build from crashing if header files are added/removed. |
||||
# Build the C core |
||||
RUN make static_c shared_c -j12 -C /var/local/git/grpc |
||||
|
||||
# Define the default command. |
||||
CMD ["bash"] |
@ -1,9 +0,0 @@ |
||||
GRPC PHP Base Dockerfile |
||||
======================== |
||||
|
||||
Dockerfile for creating the PHP gRPC development Docker instance. |
||||
|
||||
As of 2014/10 this |
||||
- it installs tools and dependencies needed to build gRPC PHP |
||||
- it does not install gRPC PHP itself; a separate Dockerfile that depends on |
||||
this one will do that |
@ -1,57 +0,0 @@ |
||||
# 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. |
||||
|
||||
# Dockerfile for GRPC Python |
||||
FROM grpc/python_base |
||||
|
||||
# Pull the latest sources |
||||
RUN cd /var/local/git/grpc \ |
||||
&& git pull --recurse-submodules \ |
||||
&& git submodule update --init --recursive |
||||
|
||||
# Build the C core. |
||||
RUN make install_c -j12 -C /var/local/git/grpc |
||||
|
||||
# Build Python GRPC |
||||
RUN cd /var/local/git/grpc \ |
||||
&& pip install src/python/grpcio \ |
||||
&& pip install src/python/grpcio_test |
||||
|
||||
# Run Python GRPC's tests |
||||
RUN cd /var/local/git/grpc \ |
||||
&& python2.7 -B src/python/grpcio_test/setup.py test |
||||
|
||||
# Add a cacerts directory containing the Google root pem file, allowing the interop client to access the production test instance |
||||
ADD cacerts cacerts |
||||
|
||||
# Add a service_account directory containing the auth creds file |
||||
ADD service_account service_account |
||||
|
||||
# Specify the default command such that the interop server runs on its known testing port |
||||
CMD ["/bin/bash", "-l", "-c", "python2.7 -m interop.server --use_tls --port 8050"] |
@ -1,11 +0,0 @@ |
||||
GRPC Python Dockerfile |
||||
==================== |
||||
|
||||
Dockerfile for creating the Python development instances |
||||
|
||||
As of 2015/02 this |
||||
- is based on the GRPC Python base |
||||
- adds a pull of the HEAD GRPC Python source from GitHub |
||||
- builds it |
||||
- runs its tests and aborts image creation if the tests don't pass |
||||
- specifies the Python GRPC interop test server as default command |
@ -1,49 +0,0 @@ |
||||
# 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. |
||||
|
||||
# Base Dockerfile for GRPC Python. |
||||
# |
||||
# Includes Python environment and installation dependencies. |
||||
FROM grpc/base |
||||
|
||||
# Allows 'source' to work |
||||
RUN rm /bin/sh && ln -s /bin/bash /bin/sh |
||||
|
||||
# Install Python development |
||||
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 cython==0.23 |
||||
|
||||
# Get the GRPC source from GitHub |
||||
RUN git clone --recursive https://github.com/grpc/grpc.git /var/local/git/grpc |
@ -1,7 +0,0 @@ |
||||
GRPC Python Base Dockerfile |
||||
======================== |
||||
|
||||
Dockerfile for creating the Python GRPC development Docker instance. |
||||
|
||||
As of 2015/02 this |
||||
- installs tools and dependencies needed to build GRPC Python |
@ -1,56 +0,0 @@ |
||||
# 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. |
||||
|
||||
# Dockerfile for gRPC Ruby |
||||
FROM grpc/ruby_base |
||||
|
||||
# Pull the latest sources |
||||
RUN cd /var/local/git/grpc \ |
||||
&& git pull --recurse-submodules \ |
||||
&& git submodule update --init --recursive |
||||
|
||||
# Prevent breaking the build if header files are added/removed. |
||||
RUN make clean -C /var/local/git/grpc |
||||
|
||||
# Build the C core |
||||
RUN make install_c -j12 -C /var/local/git/grpc |
||||
|
||||
# Build ruby gRPC and run its tests |
||||
RUN /bin/bash -l -c 'cd /var/local/git/grpc/src/ruby && gem update bundler && bundle && rake' |
||||
|
||||
# Add a cacerts directory containing the Google root pem file, allowing the |
||||
# ruby client to access the production test instance |
||||
ADD cacerts cacerts |
||||
|
||||
# Add a service_account directory containing the auth creds file |
||||
ADD service_account service_account |
||||
|
||||
# Specify the default command such that the interop server runs on its known |
||||
# testing port |
||||
CMD ["/bin/bash", "-l", "-c", "ruby /var/local/git/grpc/src/ruby/bin/interop/interop_server.rb --use_tls --port 8060"] |
@ -1,10 +0,0 @@ |
||||
GRPC Ruby Dockerfile |
||||
==================== |
||||
|
||||
Dockerfile for creating the Ruby development instances |
||||
|
||||
As of 2014/10 this |
||||
- is based on the GRPC Ruby base |
||||
- adds a pull of the HEAD gRPC Ruby source from GitHub |
||||
- it builds it |
||||
- runs the tests, i.e, the image won't be created if the tests don't pass |
@ -1,36 +0,0 @@ |
||||
#!/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. |
||||
cp -R /var/local/git-clone/grpc /var/local/git |
||||
|
||||
make clean -C /var/local/git/grpc |
||||
|
||||
make install_c -j12 -C /var/local/git/grpc |
||||
|
||||
/bin/bash -l -c 'cd /var/local/git/grpc/src/ruby && gem update bundler && bundle && rake' |
@ -1,92 +0,0 @@ |
||||
# 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. |
||||
|
||||
# Base Dockerfile for gRPC Ruby. |
||||
# |
||||
# Includes Ruby installation dependencies, things that are unlikely to vary. |
||||
FROM grpc/base |
||||
|
||||
# Allows 'source' to work |
||||
RUN rm /bin/sh && ln -s /bin/bash /bin/sh |
||||
|
||||
# Install RVM dependencies |
||||
RUN apt-get update && apt-get install -y \ |
||||
autoconf \ |
||||
automake \ |
||||
bison \ |
||||
curl \ |
||||
g++ \ |
||||
gawk \ |
||||
gcc \ |
||||
libc6-dev \ |
||||
libffi-dev \ |
||||
libgdbm-dev \ |
||||
libncurses5-dev \ |
||||
libreadline6-dev \ |
||||
libsqlite3-dev \ |
||||
libssl-dev \ |
||||
libtool \ |
||||
libyaml-dev \ |
||||
make \ |
||||
patch \ |
||||
pkg-config \ |
||||
procps \ |
||||
sqlite3 \ |
||||
zlib1g-dev |
||||
|
||||
# Install RVM, use this to install ruby |
||||
RUN gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3 # Needed for RVM |
||||
RUN /bin/bash -l -c "curl -L 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 'rvm --default use ruby-2.1' >> ~/.bashrc" |
||||
RUN /bin/bash -l -c "gem install bundler --no-ri --no-rdoc" |
||||
|
||||
# Get the source from GitHub |
||||
RUN git clone https://github.com/grpc/grpc.git /var/local/git/grpc |
||||
RUN cd /var/local/git/grpc && \ |
||||
git pull --recurse-submodules && \ |
||||
git submodule update --init --recursive |
||||
|
||||
# Build and install the protobuf library |
||||
RUN cd /var/local/git/grpc/third_party/protobuf && \ |
||||
./autogen.sh && \ |
||||
./configure --prefix=/usr && \ |
||||
make -j12 && make check && make install && make clean |
||||
|
||||
# TODO: pre-building seems unnecessary, because we need to run make clean |
||||
# anyway to prevent build from crashing if header files are added/removed. |
||||
# Build the C core |
||||
RUN make static_c shared_c -j12 -C /var/local/git/grpc |
||||
|
||||
# Define the default command. |
||||
CMD ["bash"] |
@ -1,9 +0,0 @@ |
||||
GRPC RUBY Base Dockerfile |
||||
======================== |
||||
|
||||
Dockerfile for creating the Ruby gRPC development Docker instance. |
||||
|
||||
As of 2014/10 this |
||||
- it installs tools and dependencies needed to build gRPC Ruby |
||||
- it does not install gRPC Ruby itself; a separate Dockerfile that depends on |
||||
this one will do that |
@ -1,48 +0,0 @@ |
||||
GCE images for GRPC |
||||
=================== |
||||
|
||||
This directory contains a number of shell files used for setting up GCE images |
||||
and instances for developing and testing gRPC. |
||||
|
||||
|
||||
|
||||
Goal |
||||
---- |
||||
|
||||
- provides a script to create a GCE image that has everything needed to try |
||||
out gRPC on GCE. |
||||
- provide another script that creates a new GCE instance from the latest image |
||||
|
||||
- additional scripts may be added in the future |
||||
|
||||
|
||||
Usage |
||||
------ |
||||
|
||||
# Minimal usage (see the scripts themselves for options) |
||||
|
||||
$ create_grpc_dev_image.sh # creates a grpc GCE image |
||||
$ ... |
||||
$ new_grpc_dev_instance.sh # creates an instance using the latest grpc GCE image |
||||
|
||||
|
||||
Requirements |
||||
------------ |
||||
|
||||
Install [Google Cloud SDK](https://developers.google.com/cloud/sdk/) |
||||
|
||||
Contents |
||||
-------- |
||||
|
||||
Library scripts that contain bash functions used in the other scripts: |
||||
- shared_setup_funcs.sh # funcs used in create_grpc_dev_image and new_grpc_dev_instance |
||||
- gcutil_extras.sh # wrappers for common tasks that us gcutil |
||||
- build_grpc_dist.sh # funcs building the GRPC library and tests into a debian dist |
||||
|
||||
GCE [startup scripts](https://developers.google.com/compute/docs/howtos/startupscript) |
||||
- *_on_startup.sh |
||||
|
||||
Main scripts (as of 2014/09/04) |
||||
- create_grpc_dev_instance.sh |
||||
- new_grpc_dev_instance.sh |
||||
|
@ -1,46 +0,0 @@ |
||||
#!/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. |
||||
|
||||
|
||||
main() { |
||||
# rebuild images on all languages on existing builder vm. |
||||
source grpc_docker.sh |
||||
cd ../../ |
||||
|
||||
# build images for all languages |
||||
languages=(cxx java go ruby node python csharp_mono) |
||||
for lan in "${languages[@]}" |
||||
do |
||||
grpc_update_image $lan |
||||
done |
||||
} |
||||
|
||||
set -x |
||||
main "$@" |
@ -1,58 +0,0 @@ |
||||
#!/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. |
||||
|
||||
|
||||
main() { |
||||
# restart builder vm and wait for images to sync to it |
||||
source grpc_docker.sh |
||||
./new_grpc_docker_builder.sh -igrpc-docker-builder-alt-2 -anone |
||||
cd ../../ |
||||
sleep 3600 |
||||
|
||||
# build images for all languages |
||||
languages=(cxx java go ruby node python csharp_mono) |
||||
for lan in "${languages[@]}" |
||||
do |
||||
grpc_update_image $lan |
||||
done |
||||
|
||||
# restart client and server vm and wait for images to sync to them |
||||
cd tools/gce_setup |
||||
./new_grpc_docker_builder.sh -igrpc-docker-testclients -anone |
||||
./new_grpc_docker_builder.sh -igrpc-docker-server -anone |
||||
sleep 3600 |
||||
|
||||
# launch images for all languages on server |
||||
grpc_launch_servers grpc-docker-server |
||||
|
||||
} |
||||
|
||||
set -x |
||||
main "$@" |
@ -1,89 +0,0 @@ |
||||
#!/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. |
||||
|
||||
thisfile=$(readlink -ne "${BASH_SOURCE[0]}") |
||||
cur=$(date "+%Y-%m-%d-%H-%M-%S") |
||||
log_link=https://pantheon.corp.google.com/m/cloudstorage/b/stoked-keyword-656-output/o/prod_result/prod/$cur/logs |
||||
|
||||
main() { |
||||
source grpc_docker.sh |
||||
test_cases=(large_unary empty_unary ping_pong client_streaming server_streaming cancel_after_begin cancel_after_first_response empty_stream timeout_on_sleeping_server) |
||||
auth_test_cases=(service_account_creds compute_engine_creds jwt_token_creds oauth2_auth_token per_rpc_creds) |
||||
clients=(cxx java go ruby node csharp_mono csharp_dotnet python php) |
||||
for test_case in "${test_cases[@]}" |
||||
do |
||||
for client in "${clients[@]}" |
||||
do |
||||
client_vm="grpc-docker-testclients" |
||||
if [ "$client" = "csharp_dotnet" ] |
||||
then |
||||
client_vm="grpc-windows-interop1" |
||||
fi |
||||
log_file_name=cloud_{$test_case}_{$client}.txt |
||||
if grpc_cloud_prod_test $test_case $client_vm $client > /tmp/$log_file_name 2>&1 |
||||
then |
||||
echo " ['$test_case', '$client', 'prod', true, '<a href="$log_link/$log_file_name">log</a>']," >> /tmp/cloud_prod_result.txt |
||||
else |
||||
echo " ['$test_case', '$client', 'prod', false, '<a href="$log_link/$log_file_name">log</a>']," >> /tmp/cloud_prod_result.txt |
||||
fi |
||||
gsutil cp /tmp/$log_file_name gs://stoked-keyword-656-output/prod_result/prod/$cur/logs/$log_file_name |
||||
rm /tmp/$log_file_name |
||||
done |
||||
done |
||||
for test_case in "${auth_test_cases[@]}" |
||||
do |
||||
for client in "${clients[@]}" |
||||
do |
||||
client_vm="grpc-docker-testclients" |
||||
if [ "$client" = "csharp_dotnet" ] |
||||
then |
||||
client_vm="grpc-windows-interop1" |
||||
fi |
||||
log_file_name=cloud_{$test_case}_{$client}.txt |
||||
if grpc_cloud_prod_auth_test $test_case $client_vm $client > /tmp/$log_file_name 2>&1 |
||||
then |
||||
echo " ['$test_case', '$client', 'prod', true, '<a href="$log_link/$log_file_name">log</a>']," >> /tmp/cloud_prod_result.txt |
||||
else |
||||
echo " ['$test_case', '$client', 'prod', false, '<a href="$log_link/$log_file_name">log</a>']," >> /tmp/cloud_prod_result.txt |
||||
fi |
||||
gsutil cp /tmp/$log_file_name gs://stoked-keyword-656-output/prod_result/prod/$cur/logs/$log_file_name |
||||
rm /tmp/$log_file_name |
||||
done |
||||
done |
||||
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then |
||||
cat pre.html /tmp/cloud_prod_result.txt post.html > /tmp/cloud_prod_result.html |
||||
gsutil cp /tmp/cloud_prod_result.html gs://stoked-keyword-656-output/prod_result/prod/$cur/cloud_prod_result.html |
||||
rm /tmp/cloud_prod_result.txt |
||||
rm /tmp/cloud_prod_result.html |
||||
fi |
||||
} |
||||
|
||||
set -x |
||||
main "$@" |
@ -1,62 +0,0 @@ |
||||
#!/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. |
||||
|
||||
thisfile=$(readlink -ne "${BASH_SOURCE[0]}") |
||||
test_case=$1 |
||||
client_vm=$2 |
||||
result=cloud_prod_result.$1 |
||||
cur=$(date "+%Y-%m-%d-%H-%M-%S") |
||||
log_link=https://pantheon.corp.google.com/m/cloudstorage/b/stoked-keyword-656-output/o/prod_result/$test_case/$cur |
||||
|
||||
main() { |
||||
source grpc_docker.sh |
||||
clients=(cxx java go ruby node csharp_mono python php) |
||||
for client in "${clients[@]}" |
||||
do |
||||
log_file_name=cloud_{$test_case}_{$client}.txt |
||||
if grpc_cloud_prod_test $test_case $client_vm $client > /tmp/$log_file_name 2>&1 |
||||
then |
||||
echo " ['$test_case', '$client', 'prod', true, '<a href="$log_link/$log_file_name">log</a>']," >> /tmp/$result.txt |
||||
else |
||||
echo " ['$test_case', '$client', 'prod', false, '<a href="$log_link/$log_file_name">log</a>']," >> /tmp/$result.txt |
||||
fi |
||||
gsutil cp /tmp/$log_file_name gs://stoked-keyword-656-output/prod_result/$test_case/$cur/$log_file_name |
||||
rm /tmp/$log_file_name |
||||
done |
||||
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then |
||||
cat pre.html /tmp/$result.txt post.html > /tmp/$result.html |
||||
gsutil cp /tmp/$result.html gs://stoked-keyword-656-output/prod_result/$test_case/$cur/$result.html |
||||
rm /tmp/$result.txt |
||||
rm /tmp/$result.html |
||||
fi |
||||
} |
||||
|
||||
set -x |
||||
main "$@" |
@ -1,284 +0,0 @@ |
||||
#!/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. |
||||
|
||||
|
||||
# Bash funcs shared that combine common gcutil actions into single commands |
||||
|
||||
# remove_instance removes a named instance |
||||
# |
||||
# remove_instance <project> <instance_name> [<zone>="us-central1-b"] |
||||
remove_instance() { |
||||
local project=$1 |
||||
[[ -n $project ]] || { |
||||
echo "$FUNCNAME: missing arg: project" 1>&2 |
||||
return 1 |
||||
} |
||||
local an_instance=$2 |
||||
[[ -n $an_instance ]] || { |
||||
echo "$FUNCNAME: missing arg: an_instance" 1>&2 |
||||
return 1 |
||||
} |
||||
local zone=$3 |
||||
[[ -n $zone ]] || zone="us-central1-b" |
||||
|
||||
gcloud --project $project --quiet \ |
||||
compute instances delete $an_instance --zone=$zone |
||||
} |
||||
|
||||
# has_instance checks if a project contains a named instance |
||||
# |
||||
# has_instance <project> <instance_name> |
||||
has_instance() { |
||||
local project=$1 |
||||
[[ -n $project ]] || { |
||||
echo "$FUNCNAME: missing arg: project" 1>&2 |
||||
return 1 |
||||
} |
||||
local checked_instance=$2 |
||||
[[ -n $checked_instance ]] || { |
||||
echo "$FUNCNAME: missing arg: checked_instance" 1>&2 |
||||
return 1 |
||||
} |
||||
|
||||
instances=$(gcloud --project $project compute instances list \ |
||||
| sed -e 's/ \+/ /g' | cut -d' ' -f 1) |
||||
for i in $instances |
||||
do |
||||
if [[ $i == $checked_instance ]] |
||||
then |
||||
return 0 |
||||
fi |
||||
done |
||||
|
||||
return 1 |
||||
} |
||||
|
||||
# find_network_ip finds the ip address of a instance if it is present in the project. |
||||
# |
||||
# find_network_ip <project> <instance_name> |
||||
find_network_ip() { |
||||
local project=$1 |
||||
[[ -n $project ]] || { |
||||
echo "$FUNCNAME: missing arg: project" 1>&2 |
||||
return 1 |
||||
} |
||||
local checked_instance=$2 |
||||
[[ -n $checked_instance ]] || { |
||||
echo "$FUNCNAME: missing arg: checked_instance" 1>&2 |
||||
return 1 |
||||
} |
||||
|
||||
has_instance $project $checked_instance || return 1 |
||||
gcloud --project $project compute instances list \ |
||||
| grep -e "$checked_instance\s" | sed -e 's/ \+/ /g' | cut -d' ' -f 4 |
||||
} |
||||
|
||||
# delete_disks deletes a bunch of disks matching a pattern |
||||
# |
||||
# delete_disks <project> <disk_pattern> |
||||
delete_disks() { |
||||
local project=$1 |
||||
[[ -n $project ]] || { |
||||
echo "$FUNCNAME: missing arg: project" 1>&2 |
||||
return 1 |
||||
} |
||||
local disk_pattern=$2 |
||||
[[ -n $disk_pattern ]] || { |
||||
echo "$FUNCNAME: missing arg: disk_pattern" 1>&2 |
||||
return 1 |
||||
} |
||||
|
||||
trash_disks=$(gcloud --project=$project compute disks list \ |
||||
| sed -e 's/ \+/ /g' | cut -d' ' -f 1 | grep $disk_pattern) |
||||
[[ -n $trash_disks ]] && gcloud --project $project \ |
||||
--quiet compute disks delete $trash_disks |
||||
} |
||||
|
||||
# has_firewall checks if a project contains a named firewall |
||||
# |
||||
# has_firewall <project> <checked_firewall> |
||||
has_firewall() { |
||||
local project=$1 |
||||
[[ -n $project ]] || { |
||||
echo "$FUNCNAME: missing arg: project" 1>&2 |
||||
return 1 |
||||
} |
||||
local checked_firewall=$2 |
||||
[[ -n $checked_firewall ]] || { |
||||
echo "$FUNCNAME: missing arg: checked_firewall" 1>&2 |
||||
return 1 |
||||
} |
||||
|
||||
instances=$(gcloud --project $project compute firewall-rules list \ |
||||
| sed -e 's/ \+/ /g' | cut -d' ' -f 1) |
||||
for i in $instances |
||||
do |
||||
if [[ $i == $checked_firewall ]] |
||||
then |
||||
return 0 |
||||
fi |
||||
done |
||||
|
||||
return 1 |
||||
} |
||||
|
||||
# remove_firewall removes a named firewall from a project. |
||||
# |
||||
# remove_firewall <project> <checked_firewall> |
||||
remove_firewall() { |
||||
local project=$1 |
||||
[[ -n $project ]] || { |
||||
echo "$FUNCNAME: missing arg: project" 1>&2 |
||||
return 1 |
||||
} |
||||
local a_firewall=$2 |
||||
[[ -n $a_firewall ]] || { |
||||
echo "$FUNCNAME: missing arg: a_firewall" 1>&2 |
||||
return 1 |
||||
} |
||||
|
||||
gcloud --project $project --quiet compute firewall-rules delete $a_firewall |
||||
} |
||||
|
||||
# has_network checks if a project contains a named network |
||||
# |
||||
# has_network <project> <checked_network> |
||||
has_network() { |
||||
local project=$1 |
||||
[[ -n $project ]] || { |
||||
echo "$FUNCNAME: missing arg: project" 1>&2 |
||||
return 1 |
||||
} |
||||
local checked_network=$2 |
||||
[[ -n $checked_network ]] || { |
||||
echo "$FUNCNAME: missing arg: checked_network" 1>&2 |
||||
return 1 |
||||
} |
||||
|
||||
instances=$(gcloud --project $project compute networks list \ |
||||
| sed -e 's/ \+/ /g' | cut -d' ' -f 1) |
||||
for i in $instances |
||||
do |
||||
if [[ $i == $checked_network ]] |
||||
then |
||||
return 0 |
||||
fi |
||||
done |
||||
|
||||
return 1 |
||||
} |
||||
|
||||
# maybe_setup_dev_network adds a network with the given name with firewalls |
||||
# useful to development |
||||
# |
||||
# - All machines can accessed internally and externally over SSH (port 22) |
||||
# - All machines can access one another other the internal network |
||||
# - All machines can be accessed externally via port 80, 443, 8080 and 8443 |
||||
maybe_setup_dev_network() { |
||||
local name=$1 |
||||
[[ -n $name ]] || { |
||||
echo "$FUNCNAME: missing arg: network name" 1>&2 |
||||
return 1 |
||||
} |
||||
|
||||
local project=$2 |
||||
[[ -n $project ]] || { |
||||
echo "$FUNCNAME: missing arg: project" 1>&2 |
||||
return 1 |
||||
} |
||||
|
||||
has_network $project $name || { |
||||
echo "creating network '$name'" 1>&2 |
||||
gcloud compute --project $project networks create $name || return 1 |
||||
} |
||||
|
||||
# allow instances on the network to connect to each other internally |
||||
has_firewall $project "$name-ssh" || { |
||||
echo "adding firewall '$name-ssh'" 1>&2 |
||||
gcloud compute --project $project firewall-rules create "$name-ssh" \ |
||||
--network $name \ |
||||
--allow tcp:22 || return 1; |
||||
} |
||||
|
||||
# allow instances on the network to connect to each other internally |
||||
has_firewall $project "$name-internal" || { |
||||
echo "adding firewall '$name-internal'" 1>&2 |
||||
gcloud compute --project $project firewall-rules create "$name-internal" \ |
||||
--network $name \ |
||||
--source-ranges 10.0.0.0/16 --allow tcp udp icmp || return 1; |
||||
} |
||||
|
||||
# allow instances on the network to be connected to from external ips on |
||||
# specific ports |
||||
has_firewall $project "$name-external" || { |
||||
echo "adding firewall '$name-external'" 1>&2 |
||||
gcloud compute --project $project firewall-rules create "$name-external" \ |
||||
--network $name \ |
||||
--allow tcp:80 tcp:8080 tcp:443 tcp:8443 || return 1; |
||||
} |
||||
} |
||||
|
||||
# maybe_remove_dev_network removes a network set up by maybe_setup_dev_network |
||||
maybe_remove_dev_network() { |
||||
local name=$1 |
||||
[[ -n $name ]] || { |
||||
echo "$FUNCNAME: missing arg: network name" 1>&2 |
||||
return 1 |
||||
} |
||||
|
||||
local project=$2 |
||||
[[ -n $project ]] || { |
||||
echo "$FUNCNAME: missing arg: project" 1>&2 |
||||
return 1 |
||||
} |
||||
|
||||
has_network $project $name || { |
||||
echo "network $name is not present" |
||||
return 0 |
||||
} |
||||
for i in $(gcloud compute firewall-rules list \ |
||||
| grep "$name-" | cut -d' ' -f 1) |
||||
do |
||||
gcloud compute --quiet firewall-rules delete $i || return 1; |
||||
done |
||||
gcloud compute --quiet networks delete $name |
||||
} |
||||
|
||||
# find_named_ip finds the external ip address for a given name. |
||||
# |
||||
# find_named_ip <named-ip-address> |
||||
find_named_ip() { |
||||
local name=$1 |
||||
[[ -n $name ]] || { echo "$FUNCNAME: missing arg: name" 1>&2; return 1; } |
||||
[[ $name == 'none' ]] && return 0; |
||||
|
||||
gcloud compute addresses list | sed -e 's/ \+/ /g' \ |
||||
| grep $name | cut -d' ' -f 3 |
||||
} |
File diff suppressed because it is too large
Load Diff
@ -1,77 +0,0 @@ |
||||
#!/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. |
||||
|
||||
thisfile=$(readlink -ne "${BASH_SOURCE[0]}") |
||||
test_case=$1 |
||||
client_vm=$2 |
||||
server_vm=$3 |
||||
result=interop_result.$1 |
||||
cur=$(date "+%Y-%m-%d-%H-%M-%S") |
||||
log_link=https://pantheon.corp.google.com/m/cloudstorage/b/stoked-keyword-656-output/o/interop_result/$test_case/$cur/logs |
||||
|
||||
main() { |
||||
source grpc_docker.sh |
||||
clients=(cxx java go ruby node csharp_mono csharp_dotnet python php) |
||||
servers=(cxx java go ruby node csharp_mono csharp_dotnet python csharp_mono) |
||||
for client in "${clients[@]}" |
||||
do |
||||
client_vm_test=$client_vm |
||||
if [ "$client" = "csharp_dotnet" ] |
||||
then |
||||
client_vm_test="grpc-windows-interop1" |
||||
fi |
||||
for server in "${servers[@]}" |
||||
do |
||||
log_file_name=cloud_{$test_case}_{$client}_{$server}.txt |
||||
server_vm_test=$server_vm |
||||
if [ "$server" = "csharp_dotnet" ] |
||||
then |
||||
server_vm_test="grpc-windows-interop1" |
||||
fi |
||||
if grpc_interop_test $test_case $client_vm_test $client $server_vm_test $server> /tmp/$log_file_name 2>&1 |
||||
then |
||||
echo " ['$test_case', '$client', '$server', true, '<a href="$log_link/$log_file_name">log</a>']," >> /tmp/$result.txt |
||||
else |
||||
echo " ['$test_case', '$client', '$server', false, '<a href="$log_link/$log_file_name">log</a>']," >> /tmp/$result.txt |
||||
fi |
||||
gsutil cp /tmp/$log_file_name gs://stoked-keyword-656-output/interop_result/$test_case/$cur/logs/$log_file_name |
||||
rm /tmp/$log_file_name |
||||
done |
||||
done |
||||
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then |
||||
cat pre.html /tmp/$result.txt post.html > /tmp/$result.html |
||||
gsutil cp /tmp/$result.html gs://stoked-keyword-656-output/interop_result/$test_case/$cur/$result.html |
||||
rm /tmp/$result.txt |
||||
rm /tmp/$result.html |
||||
fi |
||||
} |
||||
|
||||
set -x |
||||
main "$@" |
@ -1,75 +0,0 @@ |
||||
#!/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. |
||||
|
||||
thisfile=$(readlink -ne "${BASH_SOURCE[0]}") |
||||
current_time=$(date "+%Y-%m-%d-%H-%M-%S") |
||||
result_file_name=interop_result.$current_time.html |
||||
echo $result_file_name |
||||
pass_log_link=https://pantheon.corp.google.com/m/cloudstorage/b/stoked-keyword-656-output/o/log/interop_pass_log_history |
||||
fail_log_link=https://pantheon.corp.google.com/m/cloudstorage/b/stoked-keyword-656-output/o/log/interop_fail_log_history |
||||
|
||||
main() { |
||||
source grpc_docker.sh |
||||
test_cases=(large_unary empty_unary ping_pong client_streaming server_streaming cancel_after_begin cancel_after_first_response empty_stream timeout_on_sleeping_server) |
||||
clients=(cxx java go ruby node python csharp_mono php) |
||||
servers=(cxx java go ruby node python csharp_mono) |
||||
for test_case in "${test_cases[@]}" |
||||
do |
||||
for client in "${clients[@]}" |
||||
do |
||||
for server in "${servers[@]}" |
||||
do |
||||
log_file_name=interop_{$test_case}_{$client}_{$server}.txt |
||||
if grpc_interop_test $test_case grpc-docker-testclients $client grpc-docker-server $server > /tmp/$log_file_name 2>&1 |
||||
then |
||||
gsutil cp /tmp/$log_file_name gs://stoked-keyword-656-output/interop_pass_log_history/$log_file_name |
||||
echo " ['$test_case', '$client', '$server', true, '<a href="$pass_log_link/$log_file_name">log</a>']," >> /tmp/interop_result.txt |
||||
else |
||||
gsutil cp /tmp/$log_file_name gs://stoked-keyword-656-output/interop_fail_log_history/$log_file_name |
||||
echo " ['$test_case', '$client', '$server', false, '<a href="$fail_log_link/$log_file_name">log</a>']," >> /tmp/interop_result.txt |
||||
fi |
||||
done |
||||
done |
||||
done |
||||
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then |
||||
cat pre.html /tmp/interop_result.txt post.html > /tmp/interop_result.html |
||||
gsutil cp /tmp/interop_result.txt gs://stoked-keyword-656-output/interop_result.txt |
||||
gsutil cp -R gs://stoked-keyword-656-output/interop_pass_log_history gs://stoked-keyword-656-output/log |
||||
gsutil cp -R gs://stoked-keyword-656-output/interop_fail_log_history gs://stoked-keyword-656-output/log |
||||
gsutil cp /tmp/interop_result.html gs://stoked-keyword-656-output/interop_result.html |
||||
gsutil cp /tmp/interop_result.html gs://stoked-keyword-656-output/result_history/$result_file_name |
||||
rm /tmp/interop_result.txt |
||||
rm /tmp/interop_result.html |
||||
rm /tmp/interop*.txt |
||||
fi |
||||
} |
||||
|
||||
set -x |
||||
main "$@" |
@ -1,182 +0,0 @@ |
||||
#!/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. |
||||
|
||||
|
||||
# Triggers the build of a GCE 'grpc-docker' instance. |
||||
# |
||||
# Usage: |
||||
# /path/to/new_grpc_docker_builder.sh \ |
||||
# [--project <cloud-project-id> | -p<cloud-project-id>] \ |
||||
# [--instance <instance-to-create> | -i<instance-to-create>] \ |
||||
# [--address <named_cloud_static_ip> | -a<named_cloud_static_ip>] |
||||
# |
||||
# To run a new docker builder instance. |
||||
# $ /path/to/new_grpc_docker_builder.sh -pmy-project -imy-instance -amy-ip |
||||
# |
||||
# See main() for the full list of flags |
||||
|
||||
function this_dir() { |
||||
SCRIPT_PATH="${BASH_SOURCE[0]}"; |
||||
if ([ -h "${SCRIPT_PATH}" ]) then |
||||
while([ -h "${SCRIPT_PATH}" ]) do SCRIPT_PATH=`readlink "${SCRIPT_PATH}"`; done |
||||
fi |
||||
pushd . > /dev/null |
||||
cd `dirname ${SCRIPT_PATH}` > /dev/null |
||||
SCRIPT_PATH=`pwd`; |
||||
popd > /dev/null |
||||
echo $SCRIPT_PATH |
||||
} |
||||
|
||||
source $(this_dir)/compute_extras.sh |
||||
source $(this_dir)/grpc_docker.sh |
||||
|
||||
cp_startup_script() { |
||||
local script_dir=$1 |
||||
[[ -n $script_dir ]] || { echo "missing arg: script_dir" 1>&2; return 1; } |
||||
|
||||
local gs_script_root=$2 |
||||
[[ -n $gs_script_root ]] || { echo "missing arg: gs_script_root" 1>&2; return 1; } |
||||
|
||||
local script_path=$3 |
||||
[[ -n $script_path ]] || { echo "missing arg: script_name" 1>&2; return 1; } |
||||
|
||||
local startup_script=$script_dir/$script_path |
||||
local gs_startup_uri=$gs_script_root/$script_path |
||||
gsutil cp $startup_script $gs_startup_uri |
||||
} |
||||
|
||||
# add_instance adds a generic instance that runs |
||||
# new_grpc_docker_builder_on_startup.sh on startup |
||||
add_instance() { |
||||
local project=$1 |
||||
[[ -n $project ]] || { echo "missing arg: project" 1>&2; return 1; } |
||||
local gs_admin_root=$2 |
||||
[[ -n $gs_admin_root ]] || { echo "missing arg: gs_admin_root" 1>&2; return 1; } |
||||
local instance=$3 |
||||
[[ -n $instance ]] || { echo "missing arg: instance" 1>&2; return 1; } |
||||
local zone=$4 |
||||
[[ -n $zone ]] || { echo "missing arg: zone" 1>&2; return 1; } |
||||
local address=$5 |
||||
[[ -n $address ]] || { echo "missing arg: address" 1>&2; return 1; } |
||||
|
||||
local script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" |
||||
local gs_script_root="$gs_admin_root/startup" |
||||
|
||||
local on_startup=new_grpc_docker_builder_on_startup.sh |
||||
local gs_on_startup=$gs_script_root/$on_startup |
||||
cp_startup_script $script_dir $gs_script_root $on_startup || { |
||||
echo "Could not save script to $gs_on_startup" 1>&2 |
||||
return 1 |
||||
} |
||||
startup_md="startup-script-url=$gs_on_startup" |
||||
|
||||
local shared_startup=shared_startup_funcs.sh |
||||
local gs_shared_startup=$gs_script_root/$shared_startup |
||||
cp_startup_script $script_dir $gs_script_root $shared_startup || { |
||||
echo "Could not save script to $gs_shared_startup" 1>&2 |
||||
return 1 |
||||
} |
||||
startup_md+=" shared_startup_script_url=$gs_shared_startup" |
||||
|
||||
local docker_dir=$(this_dir)/../dockerfile |
||||
grpc_push_dockerfiles $docker_dir $gs_admin_root || return 1; |
||||
startup_md+=" gs_dockerfile_root=$gs_admin_root/dockerfile" |
||||
startup_md+=" gs_docker_reg=$gs_admin_root/docker_images" |
||||
|
||||
local address_flag="" |
||||
local the_address=$(find_named_ip $address) |
||||
[[ -n $the_address ]] && address_flag="--address $the_address" |
||||
local the_image='container-vm-v20140925' |
||||
local scopes='compute-rw storage-full' |
||||
scopes+=' https://www.googleapis.com/auth/xapi.zoo' |
||||
gcloud --project $project compute instances create $instance \ |
||||
$address_flag \ |
||||
--image $the_image \ |
||||
--image-project google-containers \ |
||||
--metadata $startup_md \ |
||||
--machine-type='n1-standard-1' \ |
||||
--scopes $scopes \ |
||||
--tags grpc testing \ |
||||
--zone $zone \ |
||||
--boot-disk-size 500GB |
||||
} |
||||
|
||||
main() { |
||||
local INSTANCE_NAME="grpc-docker-builder" |
||||
local PROJECT="stoked-keyword-656" |
||||
local GS_ADMIN_ROOT="gs://tmp-grpc-dev/admin" |
||||
local ZONE='asia-east1-a' |
||||
local ADDRESS_NAME='grpc-php-dev-static-1' # use 'none' if no static ip is needed |
||||
|
||||
# Parse the options |
||||
opts=`getopt -o a::p::g::i::z:: --long address_name::,project::,gs_admin_root::,instance_name::,zone:: -n $0 -- "$@"` |
||||
eval set -- "$opts" |
||||
while true ; do |
||||
case "$1" in |
||||
-p|--project) |
||||
case "$2" in |
||||
"") shift 2 ;; |
||||
*) PROJECT=$2; shift 2 ;; |
||||
esac ;; |
||||
-a|--address_name) |
||||
case $2 in |
||||
"") shift 2 ;; |
||||
*) ADDRESS_NAME=$2; shift 2 ;; |
||||
esac ;; |
||||
-g|--gs_admin_root) |
||||
case "$2" in |
||||
"") shift 2 ;; |
||||
*) GS_ADMIN_ROOT=$2; shift 2 ;; |
||||
esac ;; |
||||
-i|--instance_name) |
||||
case "$2" in |
||||
"") shift 2 ;; |
||||
*) INSTANCE_NAME=$2; shift 2 ;; |
||||
esac ;; |
||||
-z|--zone) |
||||
case "$2" in |
||||
"") shift 2 ;; |
||||
*) ZONE=$2; shift 2 ;; |
||||
esac ;; |
||||
--) shift ; break ;; |
||||
*) echo "Internal error!" ; exit 1 ;; |
||||
esac |
||||
done |
||||
|
||||
# verify that the instance does not currently exist |
||||
has_instance $PROJECT $INSTANCE_NAME && remove_instance $PROJECT $INSTANCE_NAME $ZONE |
||||
has_instance $PROJECT $INSTANCE_NAME && { echo "$INSTANCE_NAME already exists" 1>&2; return 1; } |
||||
|
||||
# N.B the quotes around are necessary to allow cmds with spaces |
||||
add_instance $PROJECT $GS_ADMIN_ROOT $INSTANCE_NAME $ZONE $ADDRESS_NAME |
||||
} |
||||
|
||||
set -x |
||||
main "$@" |
@ -1,170 +0,0 @@ |
||||
#!/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. |
||||
|
||||
# Startup script that initializes a grpc-dev GCE machine. |
||||
# |
||||
# A grpc-docker GCE machine is based on docker container image. |
||||
# |
||||
# On startup, it copies the grpc dockerfiles to a local directory, and update its address. |
||||
|
||||
# _load_metadata curls a metadata url |
||||
_load_metadata() { |
||||
local metadata_root=http://metadata/computeMetadata/v1 |
||||
local uri=$1 |
||||
[[ -n $uri ]] || { echo "missing arg: uri" >&2; return 1; } |
||||
|
||||
if [[ $uri =~ ^'attributes/' ]] |
||||
then |
||||
for a in $(curl -H "X-Google-Metadata-Request: True" $metadata_root/instance/attributes/) |
||||
do |
||||
[[ $uri =~ "/$a"$ ]] && { curl $metadata_root/instance/$uri -H "X-Google-Metadata-Request: True"; return; } |
||||
done |
||||
fi |
||||
|
||||
# if the uri is a full request uri |
||||
[[ $uri =~ ^$metadata_root ]] && { curl $uri -H "X-Google-Metadata-Request: True"; return; } |
||||
} |
||||
|
||||
_source_gs_script() { |
||||
local script_attr=$1 |
||||
[[ -n $script_attr ]] || { echo "missing arg: script_attr" >&2; return 1; } |
||||
|
||||
local gs_uri=$(_load_metadata "attributes/$script_attr") |
||||
[[ -n $gs_uri ]] || { echo "missing metadata: $script_attr" >&2; return 1; } |
||||
|
||||
local out_dir='/var/local/startup_scripts' |
||||
local script_path=$out_dir/$(basename $gs_uri) |
||||
mkdir -p $out_dir |
||||
gsutil cp $gs_uri $script_path || { |
||||
echo "could not cp $gs_uri -> $script_path" |
||||
return 1 |
||||
} |
||||
chmod a+rwx $out_dir $script_path |
||||
source $script_path |
||||
} |
||||
|
||||
# Args: |
||||
# $1: numerator |
||||
# $2: denominator |
||||
# $3: threshold (optional; defaults to $THRESHOLD) |
||||
# |
||||
# Returns: |
||||
# 1 if (numerator / denominator > threshold) |
||||
# 0 otherwise |
||||
_gce_disk_cmp_ratio() { |
||||
local DEFAULT_THRESHOLD="1.1" |
||||
local numer="${1}" |
||||
local denom="${2}" |
||||
local threshold="${3:-${DEFAULT_THRESHOLD}}" |
||||
|
||||
if `which python > /dev/null 2>&1`; then |
||||
python -c "print(1 if (1. * ${numer} / ${denom} > ${threshold}) else 0)" |
||||
else |
||||
echo "Can't find python; calculation not done." 1>&2 |
||||
return 1 |
||||
fi |
||||
} |
||||
|
||||
# Repartitions the disk or resizes the file system, depending on the current |
||||
# state of the partition table. |
||||
# |
||||
# Automates the process described in |
||||
# - https://cloud.google.com/compute/docs/disks/persistent-disks#repartitionrootpd |
||||
_gce_disk_maybe_resize_then_reboot() { |
||||
# Determine the size in blocks, of the whole disk and the first partition. |
||||
local dev_sda="$(fdisk -s /dev/sda)" |
||||
local dev_sda1="$(fdisk -s /dev/sda1)" |
||||
local dev_sda1_start="$(sudo fdisk -l /dev/sda | grep /dev/sda1 | sed -e 's/ \+/ /g' | cut -d' ' -f 3)" |
||||
|
||||
# Use fdisk to |
||||
# - first see if the partion 1 is using as much of the disk as it should |
||||
# - then to resize the partition if it's not |
||||
# |
||||
# fdisk(1) flags: |
||||
# -c: disable DOS compatibility mode |
||||
# -u: change display mode to sectors (from cylinders) |
||||
# |
||||
# fdisk(1) commands: |
||||
# d: delete partition (automatically selects the first one) |
||||
# n: new partition |
||||
# p: primary |
||||
# 1: partition number |
||||
# $dev_sda1_start: specify the value for the start sector, the default may be incorrect |
||||
# <1 blank lines>: accept the defaults for end sectors |
||||
# w: write partition table |
||||
if [ $(_gce_disk_cmp_ratio "${dev_sda}" "${dev_sda1}") -eq 1 ]; then |
||||
echo "$FUNCNAME: Updating the partition table to use full ${dev_sda} instead ${dev_sda1}" |
||||
cat <<EOF | fdisk -c -u /dev/sda |
||||
d |
||||
n |
||||
p |
||||
1 |
||||
$dev_sda1_start |
||||
|
||||
w |
||||
EOF |
||||
echo "$FUNCNAME: ... updated the partition table" |
||||
shutdown -r now |
||||
return 0 |
||||
fi |
||||
|
||||
# After repartitioning, use resize2fs to expand sda1. |
||||
local df_size="$(df -B 1K / | grep ' /$' | sed -e 's/ \+/ /g' | cut -d' ' -f 2)" |
||||
if [ $(_gce_disk_cmp_ratio "${dev_sda}" "${df_size}") -eq 1 ]; then |
||||
echo "$FUNCNAME: resizing the partition to make full use of it" |
||||
resize2fs /dev/sda1 |
||||
echo "$FUNCNAME: ... resize completed" |
||||
fi |
||||
} |
||||
|
||||
main() { |
||||
_gce_disk_maybe_resize_then_reboot |
||||
local script_attr='shared_startup_script_url' |
||||
_source_gs_script $script_attr || { |
||||
echo "halting, script 'attributes/$script_attr' could not be sourced" |
||||
return 1 |
||||
} |
||||
grpc_dockerfile_pull |
||||
chmod -R a+rw /var/local/dockerfile |
||||
|
||||
# Install git and emacs |
||||
apt-get update && apt-get install -y git emacs || return 1 |
||||
|
||||
# Startup the docker registry |
||||
grpc_docker_launch_registry && grpc_docker_pull_known |
||||
|
||||
# Add a sentinel file to indicate that startup has completed. |
||||
local sentinel_file=/var/log/GRPC_DOCKER_IS_UP |
||||
touch $sentinel_file |
||||
} |
||||
|
||||
set -x |
||||
main "$@" |
@ -1,11 +0,0 @@ |
||||
]); |
||||
|
||||
var table = new google.visualization.Table(document.getElementById('table_div')); |
||||
table.draw(data, {showRowNumber: true, allowHtml: true}); |
||||
} |
||||
</script> |
||||
</head> |
||||
<body> |
||||
<div id="table_div"></div> |
||||
</body> |
||||
</html> |
@ -1,15 +0,0 @@ |
||||
<html> |
||||
<head> |
||||
<script type="text/javascript" src="https://www.google.com/jsapi"></script> |
||||
<script type="text/javascript"> |
||||
google.load("visualization", "1", {packages:["table"]}); |
||||
google.setOnLoadCallback(drawTable); |
||||
|
||||
function drawTable() { |
||||
var data = new google.visualization.DataTable(); |
||||
data.addColumn('string', 'TestCase'); |
||||
data.addColumn('string', 'Client'); |
||||
data.addColumn('string', 'Server'); |
||||
data.addColumn('boolean', 'Pass'); |
||||
data.addColumn('string', 'LogLink'); |
||||
data.addRows([ |
@ -1,89 +0,0 @@ |
||||
#!/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 has to be run from the same directory as grpc_docker.sh and after grpc_docker.sh is sourced |
||||
# |
||||
# Sample Usage: |
||||
# =============================== |
||||
# ./private_build_and_test.sh [language] [environment: interop|cloud] [test case] |
||||
# [git base directory] [server name in interop environment] |
||||
# sh private_build_and_test.sh java interop large_unary /usr/local/google/home/donnadionne/grpc-git grpc-docker-server1 |
||||
# sh private_build_and_test.sh java cloud large_unary /usr/local/google/home/donnadionne/grpc-git |
||||
# =============================== |
||||
|
||||
# Arguments |
||||
LANGUAGE=$1 |
||||
ENV=$2 |
||||
TEST=$3 |
||||
GIT=$4 |
||||
PROJECT=${5:-"stoked-keyword-656"} |
||||
ZONE=${6:-"asia-east1-a"} |
||||
CLIENT=${7:-"grpc-docker-testclients1"} |
||||
SERVER=${8:-"grpc-docker-server"} |
||||
|
||||
current_time=$(date "+%Y-%m-%d-%H-%M-%S") |
||||
result_file_name=private_result.$current_time.txt |
||||
|
||||
sudo docker run --name="private_images" -v $GIT:/var/local/git-clone grpc/$LANGUAGE /var/local/git-clone/grpc/tools/dockerfile/grpc_$LANGUAGE/build.sh |
||||
|
||||
sudo docker commit -m "private image" -a $USER private_images grpc/private_images |
||||
|
||||
sudo docker tag -f grpc/private_images 0.0.0.0:5000/grpc/private_images |
||||
|
||||
sudo docker push 0.0.0.0:5000/grpc/private_images |
||||
|
||||
sudo docker rmi -f grpc/private_images |
||||
|
||||
sudo docker rm private_images |
||||
|
||||
gcloud compute --project $PROJECT ssh --zone $ZONE $CLIENT --command "sudo docker pull 0.0.0.0:5000/grpc/private_images" |
||||
|
||||
gcloud compute --project $PROJECT ssh --zone $ZONE $CLIENT --command "sudo docker tag 0.0.0.0:5000/grpc/private_images grpc/$LANGUAGE" |
||||
|
||||
source grpc_docker.sh |
||||
|
||||
if [ $ENV == 'interop' ] |
||||
then |
||||
grpc_interop_test $TEST $CLIENT $LANGUAGE $SERVER cxx |
||||
grpc_interop_test $TEST $CLIENT $LANGUAGE $SERVER java |
||||
grpc_interop_test $TEST $CLIENT $LANGUAGE $SERVER go |
||||
grpc_interop_test $TEST $CLIENT $LANGUAGE $SERVER ruby |
||||
grpc_interop_test $TEST $CLIENT $LANGUAGE $SERVER node |
||||
grpc_interop_test $TEST $CLIENT $LANGUAGE $SERVER python |
||||
else |
||||
if [ $ENV == 'cloud' ] |
||||
then |
||||
grpc_cloud_prod_test $TEST $CLIENT $LANGUAGE > /tmp/$result_file_name 2>&1 |
||||
gsutil cp /tmp/$result_file_name gs://$PROJECT-output/private_result/$result_file_name |
||||
else |
||||
grpc_cloud_prod_auth_test $TEST $CLIENT $LANGUAGE |
||||
fi |
||||
fi |
||||
|
@ -1,562 +0,0 @@ |
||||
#!/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. |
||||
# Contains common funcs shared by instance startup scripts. |
||||
# |
||||
# The funcs assume that the code is being run on a GCE instance during instance |
||||
# startup. |
||||
|
||||
function die() { |
||||
local msg="$0 failed" |
||||
if [[ -n $1 ]] |
||||
then |
||||
msg=$1 |
||||
fi |
||||
echo $msg |
||||
exit 1 |
||||
} |
||||
|
||||
# umount_by_disk_id umounts a disk given its disk_id. |
||||
umount_by_disk_id() { |
||||
local disk_id=$1 |
||||
[[ -n $disk_id ]] || { echo "missing arg: disk_id" >&2; return 1; } |
||||
|
||||
# Unmount the disk first |
||||
sudo umount /dev/disk/by-id/google-$disk_id || { echo "Could not unmount /mnt/disk-by-id/google-$disk_id" >&2; return 1; } |
||||
} |
||||
|
||||
# check_metadata confirms that the result of curling a metadata url does not |
||||
# contain 'Error 404' |
||||
check_metadata() { |
||||
local curl_output=$1 |
||||
[[ -n $curl_output ]] || { echo "missing arg: curl_output" >&2; return 1; } |
||||
|
||||
if [[ $curl_output =~ "Error 404" ]] |
||||
then |
||||
return 1 |
||||
fi |
||||
|
||||
return 0 |
||||
} |
||||
|
||||
# name_this_instance determines the current instance name. |
||||
name_this_instance() { |
||||
local the_full_host_name |
||||
the_full_host_name=$(load_metadata "http://metadata/computeMetadata/v1/instance/hostname") |
||||
check_metadata $the_full_host_name || return 1 |
||||
local the_instance |
||||
the_instance=$(echo $the_full_host_name | cut -d . -f 1 -) || { |
||||
echo "could not get the instance name from $the_full_host_name" >&2 |
||||
return 1 |
||||
} |
||||
|
||||
echo $the_instance |
||||
} |
||||
|
||||
# delete_this_instance deletes this GCE instance. (it will shutdown as a result |
||||
# of running this cmd) |
||||
delete_this_instance() { |
||||
local the_full_zone |
||||
the_full_zone=$(load_metadata "http://metadata/computeMetadata/v1/instance/zone") |
||||
check_metadata $the_full_zone || return 1 |
||||
local the_zone |
||||
the_zone=$(echo $the_full_zone | cut -d / -f 4 -) || { echo "could not get zone from $the_full_zone" >&2; return 1; } |
||||
|
||||
local the_full_host_name |
||||
the_full_host_name=$(load_metadata "http://metadata/computeMetadata/v1/instance/hostname") |
||||
check_metadata $the_full_host_name || return 1 |
||||
local the_instance |
||||
the_instance=$(echo $the_full_host_name | cut -d . -f 1 -) || { echo "could not get zone from $the_full_host_name" >&2; return 1; } |
||||
|
||||
echo "using gcloud compute instances delete to remove: ${the_instance}" |
||||
gcloud compute --quiet instances delete --delete-disks boot --zone $the_zone $the_instance |
||||
} |
||||
|
||||
# save_image_info updates the 'images' release info file on GCS. |
||||
save_image_info() { |
||||
local image_id=$1 |
||||
[[ -n $image_id ]] || { echo "missing arg: image_id" >&2; return 1; } |
||||
|
||||
local repo_gs_uri=$2 |
||||
[[ -n $repo_gs_uri ]] || { echo "missing arg: repo_gs_uri" >&2; return 1; } |
||||
|
||||
local sentinel="/tmp/$image_id.txt" |
||||
echo $image_id > $sentinel || { echo "could not create /tmp/$image_id.txt" >&2; return 1; } |
||||
|
||||
local gs_sentinel="$repo_gs_uri/images/info/LATEST" |
||||
gsutil cp $sentinel $gs_sentinel || { echo "failed to update $gs_sentinel" >&2; return 1; } |
||||
} |
||||
|
||||
# creates an image, getting the name and cloud storage uri from the supplied |
||||
# instance metadata. |
||||
create_image() { |
||||
local image_id |
||||
image_id=$(load_metadata "attributes/image_id") |
||||
[[ -n $image_id ]] || { echo "missing metadata: image_id" >&2; return 1; } |
||||
|
||||
local repo_gs_uri |
||||
repo_gs_uri=$(load_metadata "attributes/repo_gs_uri") |
||||
[[ -n $repo_gs_uri ]] || { echo "missing metadata: repo_gs_uri" >&2; return 1; } |
||||
|
||||
local the_project |
||||
the_project=$(load_metadata "http://metadata/computeMetadata/v1/project/project-id") |
||||
check_metadata $the_project || return 1 |
||||
|
||||
sudo gcimagebundle -d /dev/sda -o /tmp/ --log_file=/tmp/$image_id.log || { echo "image creation failed" >&2; return 1; } |
||||
image_path=$(ls /tmp/*.tar.gz) |
||||
image_gs_uri="$repo_gs_uri/images/$image_id.tar.gz" |
||||
|
||||
# copy the image to cloud storage |
||||
gsutil cp $image_path $image_gs_uri || { echo "failed to save image to $repo_gs_uri/$image_path " >&2; return 1; } |
||||
gcloud compute --project=$the_project images create \ |
||||
$image_id --source-uri $image_gs_uri || { echo "failed to register $image_gs_uri as $image_id" >&2; return 1; } |
||||
|
||||
save_image_info $image_id $repo_gs_uri |
||||
} |
||||
|
||||
# load_metadata curls a metadata url |
||||
load_metadata() { |
||||
local metadata_root=http://metadata/computeMetadata/v1 |
||||
local uri=$1 |
||||
[[ -n $uri ]] || { echo "missing arg: uri" >&2; return 1; } |
||||
|
||||
if [[ $uri =~ ^'attributes/' ]] |
||||
then |
||||
for a in $(curl -H "X-Google-Metadata-Request: True" $metadata_root/instance/attributes/) |
||||
do |
||||
[[ $uri =~ "/$a"$ ]] && { curl $metadata_root/instance/$uri -H "X-Google-Metadata-Request: True"; return; } |
||||
done |
||||
fi |
||||
|
||||
# if the uri is a full request uri |
||||
[[ $uri =~ ^$metadata_root ]] && { curl $uri -H "X-Google-Metadata-Request: True"; return; } |
||||
} |
||||
|
||||
install_python_module() { |
||||
local mod=$1 |
||||
[[ -z $mod ]] && { echo "missing arg: mod" >&2; return 1; } |
||||
|
||||
echo '------------------------------------' |
||||
echo 'Installing: $mod' |
||||
echo '------------------------------------' |
||||
echo |
||||
install_with_apt_get gcc python-dev python-setuptools |
||||
sudo apt-get install -y gcc python-dev python-setuptools |
||||
sudo easy_install -U pip |
||||
sudo pip uninstall -y $mod |
||||
sudo pip install -U $mod |
||||
} |
||||
|
||||
install_with_apt_get() { |
||||
local pkgs=$@ |
||||
echo '---------------------------' |
||||
echo 'Installing: $pkgs' |
||||
echo '---------------------------' |
||||
echo |
||||
sudo apt-get install -y $pkgs |
||||
} |
||||
|
||||
# pulls code from a git repo @HEAD to a local directory, removing the current version if present. |
||||
setup_git_dir() { |
||||
local git_http_repo=$1 |
||||
[[ -n $git_http_repo ]] || { echo "missing arg: git_http_repo" >&2; return 1; } |
||||
|
||||
local git_dir=$2 |
||||
[[ -n $git_dir ]] || { echo "missing arg: git_dir" >&2; return 1; } |
||||
|
||||
if [[ -e $git_dir ]] |
||||
then |
||||
rm -fR $git_dir || { echo "could not remove existing repo at $git_dir" >&2; return 1; } |
||||
fi |
||||
|
||||
local git_user |
||||
git_user=$(load_metadata "http://metadata/computeMetadata/v1/instance/service-accounts/default/email") |
||||
check_metadata $git_user || return 1 |
||||
urlsafe_git_user=$(echo $git_user | sed -e s/@/%40/g) || return 1 |
||||
|
||||
local access_token=$(load_metadata "http://metadata/computeMetadata/v1/instance/service-accounts/default/token?alt=text") |
||||
check_metadata $access_token || return 1 |
||||
local git_pwd=$(echo $access_token | cut -d' ' -f 2) || return 1 |
||||
|
||||
git clone https://$urlsafe_git_user:$git_pwd@$git_http_repo $git_dir |
||||
} |
||||
|
||||
# network_copy copies a file to another gce instance. |
||||
network_copy() { |
||||
local the_node=$1 |
||||
[[ -n $the_node ]] || { echo "missing arg: the_node" >&2; return 1; } |
||||
|
||||
local src=$2 |
||||
[[ -n $src ]] || { echo "missing arg: src" >&2; return 1; } |
||||
|
||||
local dst=$3 |
||||
[[ -n $dst ]] || { echo "missing arg: dst" >&2; return 1; } |
||||
|
||||
gcloud compute copy-files --zone=us-central1-b $src $node:$dst |
||||
} |
||||
|
||||
# gcs_copy copies a file to a location beneath a root gcs object path. |
||||
gcs_copy() { |
||||
local gce_root=$1 |
||||
[[ -n $gce_root ]] || { echo "missing arg: gce_root" >&2; return 1; } |
||||
|
||||
local src=$2 |
||||
[[ -n $src ]] || { echo "missing arg: src" >&2; return 1; } |
||||
|
||||
local dst=$3 |
||||
[[ -n $dst ]] || { echo "missing arg: dst" >&2; return 1; } |
||||
|
||||
gsutil cp $src $gce_root/$dst |
||||
} |
||||
|
||||
# find_named_ip finds the external ip address for a given name. |
||||
find_named_ip() { |
||||
local name=$1 |
||||
[[ -n $name ]] || { echo "missing arg: name" >&2; return 1; } |
||||
|
||||
gcloud compute addresses list | sed -e 's/ \+/ /g' | grep $name | cut -d' ' -f 3 |
||||
} |
||||
|
||||
# update_address_to updates this instances ip address to the reserved ip address with a given name |
||||
update_address_to() { |
||||
local name=$1 |
||||
[[ -n $name ]] || { echo "missing arg: name" >&2; return 1; } |
||||
|
||||
named_ip=$(find_named_ip $name) |
||||
[[ -n $named_ip ]] || { echo "did not find an address corresponding to $name" >&2; return 1; } |
||||
|
||||
local the_full_zone |
||||
the_full_zone=$(load_metadata "http://metadata/computeMetadata/v1/instance/zone") |
||||
check_metadata $the_full_zone || return 1 |
||||
local the_zone |
||||
the_zone=$(echo $the_full_zone | cut -d / -f 4 -) || { |
||||
echo "could not get zone from $the_full_zone" >&2 |
||||
return 1 |
||||
} |
||||
|
||||
local the_full_host_name |
||||
the_full_host_name=$(load_metadata "http://metadata/computeMetadata/v1/instance/hostname") |
||||
check_metadata $the_full_host_name || return 1 |
||||
local the_instance |
||||
the_instance=$(echo $the_full_host_name | cut -d . -f 1 -) || { |
||||
echo "could not determine the instance from $the_full_host_name" >&2 |
||||
return 1 |
||||
} |
||||
|
||||
gcloud compute instances delete-access-config --zone $the_zone $the_instance || { |
||||
echo "could not delete the access config for $the_instance" >&2 |
||||
return 1 |
||||
} |
||||
gcloud compute instances add-access-config --zone $the_zone $the_instance --address $named_ip || { |
||||
echo "could not update the access config for $the_instance to $named_ip" >&2 |
||||
return 1 |
||||
} |
||||
} |
||||
|
||||
# grpc_docker_add_docker_group |
||||
# |
||||
# Adds a docker group, restarts docker, relaunches the docker registry |
||||
grpc_docker_add_docker_group() { |
||||
[[ -f /var/log/GRPC_DOCKER_IS_UP ]] || { |
||||
echo "missing file /var/log/GRPC_DOCKER_IS_UP; either wrong machine or still starting up" >&2; |
||||
return 1 |
||||
} |
||||
sudo groupadd docker |
||||
|
||||
local user=$(id -un) |
||||
[[ -n ${user} ]] || { echo 'could not determine the user' >&2; return 1; } |
||||
sudo gpasswd -a ${user} docker |
||||
sudo service docker restart || return 1; |
||||
grpc_docker_launch_registry |
||||
} |
||||
|
||||
# grpc_dockerfile_pull <local_docker_parent_dir> |
||||
# |
||||
# requires: attributes/gs_dockerfile_root is set to cloud storage directory |
||||
# containing the dockerfile directory |
||||
grpc_dockerfile_pull() { |
||||
local dockerfile_parent=$1 |
||||
[[ -n $dockerfile_parent ]] || dockerfile_parent='/var/local' |
||||
|
||||
local gs_dockerfile_root=$(load_metadata "attributes/gs_dockerfile_root") |
||||
[[ -n $gs_dockerfile_root ]] || { echo "missing metadata: gs_dockerfile_root" >&2; return 1; } |
||||
|
||||
mkdir -p $dockerfile_parent |
||||
gsutil cp -R $gs_dockerfile_root $dockerfile_parent || { |
||||
echo "Did not copy docker files from $gs_dockerfile_root -> $dockerfile_parent" |
||||
return 1 |
||||
} |
||||
} |
||||
|
||||
# grpc_docker_launch_registry |
||||
# |
||||
# requires: attributes/gs_docker_reg is set to the cloud storage directory to |
||||
# use to store docker images |
||||
grpc_docker_launch_registry() { |
||||
local gs_docker_reg=$(load_metadata "attributes/gs_docker_reg") |
||||
[[ -n $gs_docker_reg ]] || { echo "missing metadata: gs_docker_reg" >&2; return 1; } |
||||
|
||||
local gs_bucket=$(echo $gs_docker_reg | sed -r 's|gs://([^/]*?).*|\1|g') |
||||
[[ -n $gs_bucket ]] || { |
||||
echo "could not determine cloud storage bucket from $gs_bucket" >&2; |
||||
return 1 |
||||
} |
||||
|
||||
local storage_path_env='' |
||||
local image_path=$(echo $gs_docker_reg | sed -r 's|gs://[^/]*(.*)|\1|g' | sed -e 's:/$::g') |
||||
[[ -n $image_path ]] && { |
||||
storage_path_env="-e STORAGE_PATH=$image_path" |
||||
} |
||||
|
||||
sudo docker run -d -e GCS_BUCKET=$gs_bucket $storage_path_env -p 5000:5000 google/docker-registry |
||||
# wait a couple of minutes max, for the registry to come up |
||||
local is_up=0 |
||||
for i in {1..24} |
||||
do |
||||
local secs=`expr $i \* 5` |
||||
echo "is docker registry up? waited for $secs secs ..." |
||||
wget -q localhost:5000 && { |
||||
echo 'docker registry is up!' |
||||
is_up=1 |
||||
break |
||||
} |
||||
sleep 5 |
||||
done |
||||
|
||||
[[ $is_up == 0 ]] && { |
||||
echo "docker registry not available after 120 seconds"; return 1; |
||||
} || return 0 |
||||
} |
||||
|
||||
# grpc_docker_pull_known |
||||
# |
||||
# This pulls a set of known docker images from a private docker registry to |
||||
# the local image cache. It re-labels the images so that FROM in dockerfiles |
||||
# used in dockerfiles running on the docker instance can find the images OK. |
||||
# |
||||
# optional: address of a grpc docker registry, the default is 0.0.0.0:5000 |
||||
grpc_docker_pull_known() { |
||||
local addr=$1 |
||||
[[ -n $addr ]] || addr="0.0.0.0:5000" |
||||
local known="base cxx php_base php ruby_base ruby java_base java go node_base node python_base python csharp_mono_base csharp_mono" |
||||
echo "... pulling docker images for '$known'" |
||||
for i in $known |
||||
do |
||||
echo "<--- grpc/$i" |
||||
sudo docker pull ${addr}/grpc/$i > /dev/null 2>&1 \ |
||||
&& sudo docker tag ${addr}/grpc/$i grpc/$i || { |
||||
# log and continue |
||||
echo "docker op error: could not pull ${addr}/grpc/$i" |
||||
} |
||||
done |
||||
} |
||||
|
||||
# grpc_dockerfile_build_install |
||||
# |
||||
# requires: $1 is the label to apply to the docker image |
||||
# requires: $2 is a local directory containing a Dockerfile |
||||
# requires: there is a docker registry running on 5000, e.g, grpc_docker_launch_registry was run |
||||
# |
||||
# grpc_dockerfile_install "grpc/image" /var/local/dockerfile/grpc_image |
||||
grpc_dockerfile_install() { |
||||
local image_label=$1 |
||||
[[ -n $image_label ]] || { echo "$FUNCNAME: missing arg: image_label" >&2; return 1; } |
||||
local docker_img_url=0.0.0.0:5000/$image_label |
||||
|
||||
local dockerfile_dir=$2 |
||||
[[ -n $dockerfile_dir ]] || { echo "missing arg: dockerfile_dir" >&2; return 1; } |
||||
|
||||
local cache_opt='--no-cache' |
||||
local cache=$3 |
||||
[[ $cache == "cache=yes" ]] && { cache_opt=''; } |
||||
[[ $cache == "cache=1" ]] && { cache_opt=''; } |
||||
[[ $cache == "cache=true" ]] && { cache_opt=''; } |
||||
|
||||
[[ -d $dockerfile_dir ]] || { echo "$FUNCNAME: not a valid dir: $dockerfile_dir"; return 1; } |
||||
|
||||
# For specific base images, sync private files. |
||||
# |
||||
# - the ssh key, ssh certs and/or service account info. |
||||
[[ $image_label == "grpc/base" ]] && { |
||||
grpc_docker_sync_github_key $dockerfile_dir/.ssh 'base_ssh_key' || return 1; |
||||
} |
||||
[[ $image_label == "grpc/go" ]] && { |
||||
grpc_docker_sync_github_key $dockerfile_dir/.ssh 'go_ssh_key' || return 1; |
||||
grpc_docker_sync_service_account $dockerfile_dir/service_account || return 1; |
||||
} |
||||
[[ $image_label == "grpc/java_base" ]] && { |
||||
grpc_docker_sync_github_key $dockerfile_dir/.ssh 'java_base_ssh_key' || return 1; |
||||
} |
||||
[[ $image_label == "grpc/java" ]] && { |
||||
grpc_docker_sync_service_account $dockerfile_dir/service_account || return 1; |
||||
} |
||||
[[ $image_label == "grpc/ruby" ]] && { |
||||
grpc_docker_sync_roots_pem $dockerfile_dir/cacerts || return 1; |
||||
grpc_docker_sync_service_account $dockerfile_dir/service_account || return 1; |
||||
} |
||||
[[ $image_label == "grpc/node" ]] && { |
||||
grpc_docker_sync_roots_pem $dockerfile_dir/cacerts || return 1; |
||||
grpc_docker_sync_service_account $dockerfile_dir/service_account || return 1; |
||||
} |
||||
[[ $image_label == "grpc/php" ]] && { |
||||
grpc_docker_sync_roots_pem $dockerfile_dir/cacerts || return 1; |
||||
grpc_docker_sync_service_account $dockerfile_dir/service_account || return 1; |
||||
} |
||||
[[ $image_label == "grpc/cxx" ]] && { |
||||
grpc_docker_sync_roots_pem $dockerfile_dir/cacerts || return 1; |
||||
grpc_docker_sync_service_account $dockerfile_dir/service_account || return 1; |
||||
} |
||||
[[ $image_label == "grpc/python" ]] && { |
||||
grpc_docker_sync_roots_pem $dockerfile_dir/cacerts || return 1; |
||||
grpc_docker_sync_service_account $dockerfile_dir/service_account || return 1; |
||||
} |
||||
[[ $image_label == "grpc/csharp_mono" ]] && { |
||||
grpc_docker_sync_roots_pem $dockerfile_dir/cacerts || return 1; |
||||
grpc_docker_sync_service_account $dockerfile_dir/service_account || return 1; |
||||
} |
||||
|
||||
# For deb builds, copy the distpackages folder into the docker directory so |
||||
# that it can be installed using ADD distpackages distpackages. |
||||
[[ $image_label == "grpc/build_deb" ]] && { |
||||
cp -vR ~/distpackages $dockerfile_dir |
||||
} |
||||
|
||||
# TODO(temiola): maybe make cache/no-cache a func option? |
||||
sudo docker build --force-rm=true $cache_opt -t $image_label $dockerfile_dir || { |
||||
echo "$FUNCNAME:: build of $image_label <- $dockerfile_dir" |
||||
return 1 |
||||
} |
||||
sudo docker tag $image_label $docker_img_url || { |
||||
echo "$FUNCNAME: failed to tag $docker_img_url as $image_label" |
||||
return 1 |
||||
} |
||||
sudo docker push $docker_img_url || { |
||||
echo "$FUNCNAME: failed to push $docker_img_url" |
||||
return 1 |
||||
} |
||||
} |
||||
|
||||
# grpc_dockerfile_refresh |
||||
# |
||||
# requires: $1 is the label to apply to the docker image |
||||
# requires: $2 is a local directory containing a Dockerfile |
||||
# requires: there is a docker registry running on 5000, e.g, grpc_docker_launch_registry was run |
||||
# |
||||
# call-seq: |
||||
# grpc_dockerfile_refresh "grpc/mylabel" /var/local/dockerfile/dir_containing_my_dockerfile |
||||
grpc_dockerfile_refresh() { |
||||
grpc_dockerfile_install "$@" |
||||
} |
||||
|
||||
# grpc_docker_sync_github_key. |
||||
# |
||||
# Copies the docker github key from GCS to the target dir |
||||
# |
||||
# call-seq: |
||||
# grpc_docker_sync_github_key <target_dir> |
||||
grpc_docker_sync_github_key() { |
||||
local target_dir=$1 |
||||
[[ -n $target_dir ]] || { echo "$FUNCNAME: missing arg: target_dir" >&2; return 1; } |
||||
|
||||
local key_file=$2 |
||||
[[ -n $key_file ]] || { echo "$FUNCNAME: missing arg: key_file" >&2; return 1; } |
||||
|
||||
# determine the admin root; the parent of the dockerfile root, |
||||
local gs_dockerfile_root=$(load_metadata "attributes/gs_dockerfile_root") |
||||
[[ -n $gs_dockerfile_root ]] || { |
||||
echo "$FUNCNAME: missing metadata: gs_dockerfile_root" >&2 |
||||
return 1 |
||||
} |
||||
local gcs_admin_root=$(dirname $gs_dockerfile_root) |
||||
|
||||
# cp the file from gsutil to a known local area |
||||
local gcs_key_path=$gcs_admin_root/github/$key_file |
||||
local local_key_path=$target_dir/github.rsa |
||||
mkdir -p $target_dir || { |
||||
echo "$FUNCNAME: could not create dir: $target_dir" 1>&2 |
||||
return 1 |
||||
} |
||||
gsutil cp $src $gcs_key_path $local_key_path |
||||
} |
||||
|
||||
# grpc_docker_sync_roots_pem. |
||||
# |
||||
# Copies the root pems from GCS to the target dir |
||||
# |
||||
# call-seq: |
||||
# grpc_docker_sync_roots_pem <target_dir> |
||||
grpc_docker_sync_roots_pem() { |
||||
local target_dir=$1 |
||||
[[ -n $target_dir ]] || { echo "$FUNCNAME: missing arg: target_dir" >&2; return 1; } |
||||
|
||||
# determine the admin root; the parent of the dockerfile root, |
||||
local gs_dockerfile_root=$(load_metadata "attributes/gs_dockerfile_root") |
||||
[[ -n $gs_dockerfile_root ]] || { |
||||
echo "$FUNCNAME: missing metadata: gs_dockerfile_root" >&2 |
||||
return 1 |
||||
} |
||||
local gcs_admin_root=$(dirname $gs_dockerfile_root) |
||||
|
||||
# cp the file from gsutil to a known local area |
||||
local gcs_certs_path=$gcs_admin_root/cacerts/roots.pem |
||||
local local_certs_path=$target_dir/roots.pem |
||||
mkdir -p $target_dir || { |
||||
echo "$FUNCNAME: could not create dir: $target_dir" 1>&2 |
||||
return 1 |
||||
} |
||||
gsutil cp $src $gcs_certs_path $local_certs_path |
||||
} |
||||
|
||||
# grpc_docker_sync_service_account. |
||||
# |
||||
# Copies the service account from GCS to the target dir |
||||
# |
||||
# call-seq: |
||||
# grpc_docker_sync_service_account <target_dir> |
||||
grpc_docker_sync_service_account() { |
||||
local target_dir=$1 |
||||
[[ -n $target_dir ]] || { echo "$FUNCNAME: missing arg: target_dir" >&2; return 1; } |
||||
|
||||
# determine the admin root; the parent of the dockerfile root, |
||||
local gs_dockerfile_root=$(load_metadata "attributes/gs_dockerfile_root") |
||||
[[ -n $gs_dockerfile_root ]] || { |
||||
echo "$FUNCNAME: missing metadata: gs_dockerfile_root" >&2 |
||||
return 1 |
||||
} |
||||
local gcs_admin_root=$(dirname $gs_dockerfile_root) |
||||
|
||||
# cp the file from gsutil to a known local area |
||||
local gcs_acct_path=$gcs_admin_root/service_account/stubbyCloudTestingTest-ee3fce360ac5.json |
||||
local local_acct_path=$target_dir/stubbyCloudTestingTest-ee3fce360ac5.json |
||||
mkdir -p $target_dir || { |
||||
echo "$FUNCNAME: could not create dir: $target_dir" 1>&2 |
||||
return 1 |
||||
} |
||||
gsutil cp $src $gcs_acct_path $local_acct_path |
||||
} |
Loading…
Reference in new issue