forked from angular/angular
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
build: create script for setting up RBE in local dev environment (ang…
…ular#31200) PR Close angular#31200
- Loading branch information
1 parent
65297cd
commit deaac32
Showing
1 changed file
with
70 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 <ServiceAccountKeyLocation> | ||
\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; |