- 위에서도 언급했지만, app.yaml 파일에 env_variables 항목이 이미 있는 경우에는 정상적으로 동작하지 않습니다.
- 이미 존재하는 환경변수도 함께 사용할 수 있는 방식으로 보완하면 더 좋을 것 같습니다.
yarn add global envsub
npm add -g envsub
npx envsub
envsub templateFile outputFile
명령을 실행하면 templateFile에 있던 변수가 환경변수의 값으로 교체가 됩니다.intro.template.txt
This is ${USER_ID}'s velog.
I'm ${NICK_NAME}.
export USER_ID=modolee
export NICK_NAME=ironman
npx envsub intro.template.txt intro.txt
intro.txt
This is modolee's velog.
I'm ironman.
이것을 이용하면 Bitbucket Pipelines에서 Google App Engine으로 배포 할 때, 환경변수를 외부에 노출시키지 않고 Bitbucket에 저장해서 사용할 수 있습니다.
템플릿 파일 app.template.yaml
runtime: custom
env: flex
service: auth
resources:
cpu: 1
memory_gb: 0.5
disk_size_gb: 10
beta_settings:
cloud_sql_instances: ${DB_CONNECTION_NAME}=tcp:${POSTGRES_PORT}
env_variables:
POSTGRES_HOST: ${POSTGRES_HOST}
POSTGRES_PORT: ${POSTGRES_PORT}
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
bitbucket-pipelines.yml
...
deploy: &deploy
step:
name: Deploy to Google App Engine
deployment: gcp
script:
- npx envsub app.template.yaml app.yaml
- cat ./app.yaml
- pipe: atlassian/google-app-engine-deploy:0.7.3
variables:
KEY_FILE: $KEY_FILE
PROJECT: $PROJECT
...
npx envsub app.template.yaml app.yaml
명령을 배포 전에 추가하여 환경변수 값으로 대체 된 값을 가지고 있는 app.yaml
파일을 유동적으로 만들 수 있습니다.env_variables
뿐만 아니라 cloud_sql_instances
와 같이 노출되면 꺼림칙 한 정보들을 숨길 수 있습니다.
👍