1#!/bin/bash 2# Copyright 2015 gRPC authors. 3# 4# Licensed under the Apache License, Version 2.0 (the "License"); 5# you may not use this file except in compliance with the License. 6# You may obtain a copy of the License at 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, 12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13# See the License for the specific language governing permissions and 14# limitations under the License. 15 16# Creates an interop worker on GCE. 17# IMPORTANT: After this script finishes, there are still some manual 18# steps needed there are hard to automatize. 19# See go/grpc-jenkins-setup for followup instructions. 20 21set -ex 22 23cd "$(dirname "$0")" 24 25CLOUD_PROJECT=grpc-testing 26ZONE=us-east1-a # canary gateway is reachable from this zone 27 28INSTANCE_NAME="${1:-grpc-canary-interop2}" 29 30gcloud compute instances create "$INSTANCE_NAME" \ 31 --project="$CLOUD_PROJECT" \ 32 --zone "$ZONE" \ 33 --machine-type n1-standard-16 \ 34 --image ubuntu-15-10 \ 35 --boot-disk-size 1000 \ 36 --scopes https://www.googleapis.com/auth/xapi.zoo \ 37 --tags=allow-ssh 38 39echo 'Created GCE instance, waiting 60 seconds for it to come online.' 40sleep 60 41 42gcloud compute copy-files \ 43 --project="$CLOUD_PROJECT" \ 44 --zone "$ZONE" \ 45 jenkins_master.pub linux_worker_init.sh "${INSTANCE_NAME}":~ 46 47gcloud compute ssh \ 48 --project="$CLOUD_PROJECT" \ 49 --zone "$ZONE" \ 50 "$INSTANCE_NAME" --command "./linux_worker_init.sh" 51