blob: 7745f80ba43df427f918f8aef23470590e8d3a1c [file] [log] [blame]
#!/bin/bash
set -e
set -o pipefail
# Generate a new key for a service account and upload it to GCP Secret Manager.
if [ $# -ne 2 ]; then
echo "$0 <project id> <service-account-name>"
exit 1
fi
PROJECT="$1"; shift
SA_NAME="$1"; shift
REL=$(dirname "$0")
source ${REL}/config.sh
SECRET_NAME="$(service_account_secret_name ${PROJECT} ${SA_NAME})"
# Convert PROJECT to PROJECT_SUBDOMAIN, i.e. convert "google.com:skia-corp" to
# "skia-corp.google.com", but leave "skia-public" alone.
PROJECT_SUBDOMAIN=$(echo ${PROJECT} | sed 's#^\(.*\):\(.*\)$#\2.\1#g')
EMAIL="${SA_NAME}@${PROJECT_SUBDOMAIN}.iam.gserviceaccount.com"
# Create the secret if it doesn't already exist.
gcloud --project=skia-infra-public secrets create ${SECRET_NAME} >> /dev/null 2>&1 || true
# Create the key and add the new secret version.
gcloud --project=${PROJECT} beta iam service-accounts keys create /dev/stdout --iam-account="${EMAIL}" \
| gcloud --project=skia-infra-public secrets versions add ${SECRET_NAME} --data-file=-