1- version : 2
1+ version : 2.1
2+ commands :
3+ deployment_setup :
4+ steps :
5+ - run :
6+ name : " Set the Tier"
7+ command : |
8+ TIER=DEV
9+ if [[ ${CIRCLE_BRANCH} =~ (prod|uat|test).* ]]; then
10+ TIER=$(awk -F[\-_] '{print toupper($1)}' \<<< ${CIRCLE_BRANCH})
11+ fi
12+ echo "export TIER=${TIER}" >> $BASH_ENV
13+ echo "Tier was identified as ${TIER} for branch ${CIRCLE_BRANCH}"
14+ - run :
15+ name : " Assign Project-level vars"
16+ command : |
17+ if [ ! -f deployment.key.json ]; then
18+ echo "Deployment JSON keyfile not found - loading from CircleCI."
19+ KEY=${DEPLOYMENT_KEY_ISB_CGC}
20+ else
21+ echo "Deployment JSON keyfile found."
22+ KEY="NA"
23+ fi
24+ CLIENT_EMAIL=${DEPLOYMENT_CLIENT_EMAIL_ISB_CGC}
25+ PROJECT_ID=${DEPLOYMENT_PROJECT_ID_ISB_CGC}
26+ BUCKET=${DEPLOYMENT_BUCKET_ISB_CGC}
27+ if [[ ${TIER} == "PROD" ]] || [[ ${TIER} == "DEV" ]]; then
28+ BUCKET="${BUCKET}/${TIER,,}"
29+ echo "Using default project ${PROJECT_ID} and related deployment SA and bucket."
30+ elif [[ ${TIER} == "UAT" ]]; then
31+ KEY=${DEPLOYMENT_KEY_ISB_CGC_UAT}
32+ CLIENT_EMAIL=${DEPLOYMENT_CLIENT_EMAIL_ISB_CGC_UAT}
33+ PROJECT_ID=${DEPLOYMENT_PROJECT_ID_ISB_CGC_UAT}
34+ BUCKET=${DEPLOYMENT_BUCKET_ISB_CGC_UAT}
35+ elif [[ ${TIER} == "TEST" ]]; then
36+ KEY=${DEPLOYMENT_KEY_ISB_CGC_TEST}
37+ CLIENT_EMAIL=${DEPLOYMENT_CLIENT_EMAIL_ISB_CGC_TEST}
38+ PROJECT_ID=${DEPLOYMENT_PROJECT_ID_ISB_CGC_TEST}
39+ BUCKET=${DEPLOYMENT_BUCKET_ISB_CGC_TEST}
40+ else
41+ echo "[ERROR] - Unrecognized tier: ${TIER} - exitng."
42+ exit 1
43+ fi
44+
45+ echo "export DEPLOYMENT_KEY=\"${KEY}\"" >> $BASH_ENV
46+ echo "export DEPLOYMENT_CLIENT_EMAIL=${CLIENT_EMAIL}" >> $BASH_ENV
47+ echo "export DEPLOYMENT_PROJECT_ID=${PROJECT_ID}" >> $BASH_ENV
48+ echo "export DEPLOYMENT_BUCKET=${BUCKET}" >> $BASH_ENV
49+
50+ deployment_config :
51+ steps :
52+ - run :
53+ name : " Set tier-specific configuration file"
54+ command : |
55+ sudo -E /bin/bash ./shell/pull_config.sh
56+ xargs -a deployment_config.txt -I{} echo "export {}" >> $BASH_ENV
57+
58+ auth :
59+ steps :
60+ - run :
61+ name : " Service Account Auth and Project Settings"
62+ command : |
63+ sudo -E /bin/bash ./shell/gcloud_authenticate.sh
64+
65+ install_cloud_sdk :
66+ steps :
67+ - run :
68+ name : " Install CloudSDK"
69+ command : |
70+ echo "export CLOUDSDK_CORE_DISABLE_PROMPTS=1" >> $BASH_ENV
71+ echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] http://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
72+ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -
73+ sudo apt-get update && sudo apt-get -y --allow-downgrades install google-cloud-sdk=251.0.0-0
74+
275jobs :
376 build_job :
477 environment :
578 TZ : " /usr/share/zoneinfo/America/Los_Angeles"
6- name : Building Deployment Container
779 working_directory : ~/ISB-CGC-API
880 docker :
9- - image : circleci/python:2 .7.14
81+ - image : circleci/python:3 .7.0-stretch
1082 - image : circleci/mysql:5.7
1183 environment :
1284 MYSQL_ROOT_HOST : " %"
@@ -33,30 +105,22 @@ jobs:
33105 key : isb-cgc-api-lib-{{ checksum "requirements.txt" }}
34106 paths :
35107 - ./lib
36- - save_cache :
37- key : isb-cgc-api-google-deps-{{ checksum "./shell/install-deps.sh" }}
38- paths :
39- - ./google-cloud-sdk
40- - ./google_appengine
108+ - deployment_setup
109+ - auth
110+ - deployment_config
41111 - run :
42- name : Auth and Staging
112+ name : Staging
43113 command : |
44- sudo -E /bin/sh ./shell/gcloud_authenticate.sh
45114 sudo -E /bin/bash ./shell/gcloud-pull-staging-files.sh
46115 - save_cache :
47116 key : isb-cgc-api-{{ epoch }}
48117 paths :
49- - ./api
50- - ./api_3
51- - ./bq_data_access
118+ - ./apiv4
52119 - ./shell
53120 - ./ISB-CGC-Common
54- - ./saml
55- - ./lib
56- - ./appengine_config.py
57- - ./cgc_api.py
121+ - ./Dockerfile
58122 - ./app.yaml
59- - ./manage.py
123+ - ./openapi-appengine.yaml
60124 - ./settings.py
61125 - ./txt
62126 - ./json
65129 deploy_job :
66130 environment :
67131 TZ : " /usr/share/zoneinfo/America/Los_Angeles"
68- name : Deploy to AppEngine Standard
69132 docker :
70- - image : circleci/python:2 .7.14
133+ - image : circleci/python:3 .7.0-stretch
71134 working_directory : ~/ISB-CGC-API
72135 steps :
73136 - restore_cache :
@@ -76,11 +139,16 @@ jobs:
76139 - restore_cache :
77140 keys :
78141 - isb-cgc-api-google-deps-
142+ - install_cloud_sdk
143+ - deployment_setup
144+ - auth
145+ - deployment_config
79146 - deploy :
147+ nane : Deployment
80148 command : |
81- sudo -E /bin/bash ./shell/gcloud_authenticate.sh
82149 sudo -E /bin/bash ./shell/unpack_for_deployment.sh
83- sudo -E ./google-cloud-sdk/bin/gcloud app deploy --verbosity=debug ./app.yaml --quiet
150+ sudo -E gcloud endpoints services deploy ./openapi-appengine.yaml
151+ sudo -E gcloud app deploy --verbosity=debug ./app.yaml --quiet
84152workflows :
85153 version : 2
86154 build_and_deploy :
@@ -91,4 +159,8 @@ workflows:
91159 - build_job
92160 filters :
93161 branches :
94- only : prod
162+ only :
163+ - master
164+ - test
165+ - uat
166+ - prod
0 commit comments