From deaac32bbd70fdfcb1f3b5ff91ba94949bdbcd9c Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Fri, 21 Jun 2019 12:53:17 -0700 Subject: [PATCH] build: create script for setting up RBE in local dev environment (#31200) PR Close #31200 --- scripts/local-dev/setup-rbe.sh | 70 ++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100755 scripts/local-dev/setup-rbe.sh diff --git a/scripts/local-dev/setup-rbe.sh b/scripts/local-dev/setup-rbe.sh new file mode 100755 index 0000000000..d66c01bba6 --- /dev/null +++ b/scripts/local-dev/setup-rbe.sh @@ -0,0 +1,70 @@ +#!/bin/bash +# A script for automatically configuring a user's local dev +# environment to use Remote Build Execution. + +# Determine the root directory of the Angular github repo. +project_directory=$(git rev-parse --show-toplevel 2> /dev/null); +if [[ $? -ne 0 ]]; then + echo "This command must be run from within the cloned \"angular/angular\" repository."; + exit 1; +fi + +# Confirm gcloud installed and available as a command. +if [ ! -x "$(command -v gcloud)" ]; then + echo "gcloud command is not available. Please install gcloud before continuing."; + exit 1; +fi + +# Confirm the parameter provided to the script is a directory +if [[ ! -d $1 ]]; then + echo -e "Invalid command syntax. + + \e[1mUsage:\e[0m $0 + + \e[1mExample:\e[0m ./setup-rbe ~/my_key_storage_directory/ + + The directory provided will be used to store the GCP service account key + for the angular-local-dev service account. This key will then be used to + authenticate for usage of the Remote Build Execution system and Remote Caching. +"; + exit 1; +fi +credentials_directory=$(readlink -f $1) +if [[ ! -d $credentials_directory ]]; then + echo "The specified directory does not exist. Please create the directory and rerun."; + exit 1; +fi + +# Create the service account key in the provided directory. +echo "Checking provided directory for a service account key."; +json_key_filepath="$credentials_directory/angular-local-dev-key.json"; +if [[ -f $json_key_filepath ]]; then + echo "Angular Local Dev key already exists, reusing this key."; +else + # Confirm the user is already logged into gcloud, if they aren't + # attempt to login + echo "Checking gcloud login state."; + gcloud auth print-identity-token &> /dev/null; + if [[ $? -ne 0 ]]; then + echo "Not currently logged into gcloud. Starting gcloud login now."; + gcloud auth login; + if [[ $? -ne 0 ]]; then + echo "gcloud login failed. Aborting."; + exit 2; + fi + fi + gcloud iam service-accounts keys create $json_key_filepath \ + --iam-account angular-local-dev@internal-200822.iam.gserviceaccount.com \ + --quiet --project internal-200822; + if [[ $? -ne 0 ]]; then + echo "Downloading service account key failed. Aborting."; + exit 2; + fi +fi + +# The full path to the .bazelrc.user file +bazelrc_user_filepath="$project_directory/.bazelrc.user"; +# Create the bazelrc.user file, echo the config flags into the file. +touch $bazelrc_user_filepath; +echo "build --config=remote-http-caching" >> $bazelrc_user_filepath; +echo "build --google_credentials=$json_key_filepath" >> $bazelrc_user_filepath;