Create docker image to Retrieve secret from GCP Secret Manager.
Release notes
Problem to solve
Intended users
User experience goal
Proposal
Use include
to use the GCP CLI docker image from #207828.
There should be a job that extracts the secret into a .env file to be used in the pipeline.
Secrets needed:
-
GOOGLE_PROJECT_ID:
-
GOOGLE_COMPUTE_ZONE:
Further details
Get Secret Version Orb
version: '2.1'
orbs:
gcp-cli: circleci/gcp-cli@x.y.z
gcp-sm: pathmotion/gcp-secret-manager@x.y.z
jobs:
access-gcp-secret-version:
environment:
GOOGLE_COMPUTE_ZONE: my-gcp-zone
GOOGLE_PROJECT_ID: my-gcp-project-id
executor: gcp-sm/default
steps:
- gcp-cli/initialize
- gcp-sm/access-secret-version:
secret-name: MY_API_TOKEN
- persist_to_workspace:
paths:
- .secrets/secrets.env
root: .
workflows: null
Access Secret Version Orb
description: Retrieves a secret from GCP Secret Manager.
parameters:
create-secrets-directory:
default: true
type: boolean
secret-file:
default: secrets.env
type: string
secret-names:
type: string
secret-version:
default: latest
type: string
secrets-directory:
default: .secrets
type: string
steps:
- when:
condition: << parameters.create-secrets-directory >>
steps:
run:
command: mkdir -p << parameters.secrets-directory >>
name: Create secrets directory
- run:
command: |
IFS="," read -ra SECRETNAMES \<<< << parameters.secret-names >>
for secret in "${SECRETNAMES[@]}"
do
echo "export ${secret}='$(gcloud secrets versions access << parameters.secret-version >> \
--secret=${secret})'" >> << parameters.secrets-directory >>/<< parameters.secret-file >>
done
name: Access a secret version