@@ -38,14 +38,14 @@ commands:
3838 - restore_cache :
3939 name : Restore npm cache
4040 keys :
41- - npm-v1-{{ checksum "package.json" }}
41+ - npm-v1-{{ checksum "package-lock .json" }}
4242 - npm-v1-
4343 - run :
4444 name : Install npm modules
45- command : npm install
45+ command : npm ci
4646 - save_cache :
4747 name : Save NPM cache
48- key : npm-v1-{{ checksum "package.json" }}
48+ key : npm-v1-{{ checksum "package-lock .json" }}
4949 paths :
5050 - " node_modules"
5151
@@ -90,27 +90,45 @@ commands:
9090 aws-secret-access-key : env_CONTEXT_ARTIFACT_S3_AWS_SECRET_ACCESS_KEY
9191 aws-region : env_CONTEXT_ARTIFACT_S3_AWS_REGION
9292
93- docker :
93+ docker_build_push :
9494 description : " Build and Push image to docker hub"
95+ parameters :
96+ docker_tag :
97+ type : string
98+ default : " beta-${CIRCLE_SHA1}"
99+ docker_latest_tag :
100+ type : string
101+ default : " beta-latest"
102+ nginx_location :
103+ type : string
104+ default : " /usr/share/nginx/html/beta"
95105 steps :
96106 - setup_remote_docker
97107 - run :
98108 name : Building docker image
99109 command : |
100- docker build -t ${DOCKHUB_ORGANISATION}/binary-static-webtrader:${CIRCLE_SHA1} -t ${DOCKHUB_ORGANISATION}/binary-static-webtrader:latest .
110+ docker build --build-arg NGINX_LOCATION=<< parameters.nginx_location >> - t ${DOCKHUB_ORGANISATION}/binary-static-webtrader:<< parameters.docker_tag >> -t ${DOCKHUB_ORGANISATION}/binary-static-webtrader:<< parameters.docker_latest_tag >> .
101111 - run :
102112 name : Pushing Image to docker hub
103113 command : |
104114 echo $DOCKERHUB_PASSWORD | docker login -u $DOCKERHUB_USERNAME --password-stdin
105- docker push ${DOCKHUB_ORGANISATION}/binary-static-webtrader:${CIRCLE_SHA1}
106- docker push ${DOCKHUB_ORGANISATION}/binary-static-webtrader:latest
107-
115+ docker push ${DOCKHUB_ORGANISATION}/binary-static-webtrader
108116 k8s_deploy :
109117 description : " Deploy to k8s cluster"
118+ parameters :
119+ k8s_svc_name :
120+ type : string
121+ default : " webtrader-beta-binary-com"
122+ docker_tag :
123+ type : string
124+ default : " beta-${CIRCLE_SHA1}"
125+ k8s-deployment :
126+ type : string
127+ default : " webtrader-beta-binary-com"
110128 steps :
111129 - k8s/install-kubectl
112130 - run :
113- name : Deploying to k8s cluster for service binary-webtrader
131+ name : Deploying to k8s cluster for service << parameters.k8s_svc_name >>
114132 command : |
115133 for SERVER_ID in {1..5}
116134 do
@@ -124,11 +142,20 @@ commands:
124142 KUBE_SERVER="${!KUBE_SERVER_REF}"
125143 SERVICEACCOUNT_TOKEN="${!SERVICEACCOUNT_TOKEN_REF}"
126144 echo $CA_CRT | base64 --decode > ca.crt
127- kubectl --server=${KUBE_SERVER} --certificate-authority=ca.crt --token=$SERVICEACCOUNT_TOKEN set image deployment/webtrader-binary-com webtrader-binary-com =${DOCKHUB_ORGANISATION}/binary-static-webtrader:${CIRCLE_SHA1}
145+ kubectl --server=${KUBE_SERVER} --certificate-authority=ca.crt --token=$SERVICEACCOUNT_TOKEN set image deployment/<< parameters.k8s-deployment >> << parameters.k8s-deployment >> =${DOCKHUB_ORGANISATION}/binary-static-webtrader:<< parameters.docker_tag >>
128146 fi
129147 done
130148jobs :
131- release :
149+ release_development :
150+ docker :
151+ - image : circleci/node:12.13.0-stretch
152+ steps :
153+ - git_checkout_from_cache
154+ - npm_install
155+ - build
156+ - docker_build_push
157+ - k8s_deploy
158+ release_production :
132159 docker :
133160 - image : circleci/node:12.13.0-stretch
134161 steps :
@@ -138,14 +165,27 @@ jobs:
138165 - compress
139166 - upload_artifact # uploading the built code to s3 to create a backup of key services separate from Kubernetes deployment
140167 - upload_checksum # uploading compressed artifact checksum to cross match artifact fingerprint before actual deployment
141- - docker
142- - k8s_deploy
168+ - docker_build_push :
169+ docker_latest_tag : " latest"
170+ docker_tag : " ${CIRCLE_SHA1}"
171+ nginx_location : " /usr/share/nginx/html"
172+ - k8s_deploy :
173+ k8s_svc_name : " webtrader-binary-com"
174+ docker_tag : " ${CIRCLE_SHA1}"
175+ k8s-deployment : " webtrader-binary-com"
143176
144177workflows :
145- release :
146- jobs :
147- - release :
148- context : binary-frontend-artifact-upload
178+ release_development :
179+ jobs :
180+ - release_development :
181+ filters :
182+ branches :
183+ only : /^development$/
184+ context : binary-frontend-artifact-upload
185+ release_production :
186+ jobs :
187+ - release_production :
149188 filters :
150189 branches :
151190 only : /^master$/
191+ context : binary-frontend-artifact-upload
0 commit comments