11version : 2.1
22orbs :
33 k8s : circleci/kubernetes@0.7.0
4- s3 : circleci/aws-s3@1.0.13
54commands :
65 git_checkout_from_cache :
76 description : " Git checkout and save cache"
@@ -12,8 +11,8 @@ commands:
1211 - source-v1-{{ .Branch }}-{{ .Revision }}
1312 - source-v1-{{ .Branch }}-
1413 - source-v1-
15- - run :
16- name : Fetch git tags
14+ - run :
15+ name : Fetch git tags
1716 command : |
1817 mkdir -p ~/.ssh
1918 echo 'github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ== ' >> ~/.ssh/known_hosts
@@ -24,7 +23,7 @@ commands:
2423 fi
2524 - checkout
2625 - run :
27- name : Compress git objects
26+ name : Compress git objects
2827 command : git gc
2928 - save_cache :
3029 name : Git save cache
@@ -38,150 +37,64 @@ commands:
3837 - restore_cache :
3938 name : Restore npm cache
4039 keys :
41- - npm-v1-{{ checksum "package-lock .json" }}
40+ - npm-v1-{{ checksum "package.json" }}
4241 - npm-v1-
4342 - run :
4443 name : Install npm modules
45- command : npm ci
44+ command : npm install
4645 - save_cache :
4746 name : Save NPM cache
48- key : npm-v1-{{ checksum "package-lock .json" }}
47+ key : npm-v1-{{ checksum "package.json" }}
4948 paths :
5049 - " node_modules"
5150
5251 build :
5352 description : " Build"
5453 steps :
5554 - run :
56- name : " Compile project "
57- command : npm run build
55+ name : " Grunt deploy "
56+ command : npm run deploy-ci
5857
59- compress :
60- description : " Compress"
61- steps :
62- - run :
63- name : " Compress"
64- command : |
65- pushd dist/compressed/
66- tar -cvf artifact.tar *
67- mv artifact.tar ${OLDPWD}/
68- - run :
69- name : " Tag commit id as artifact identifer"
70- command : echo "${CIRCLE_SHA1}" > artifact-info.txt
71-
72- upload_artifact :
73- description : " upload build artifact to s3 bucket"
74- steps :
75- - s3/copy :
76- from : artifact.tar
77- to : ' s3://${CONTEXT_ARTIFACT_S3_BUCKET}/${CIRCLE_PROJECT_REPONAME}/'
78- aws-access-key-id : env_CONTEXT_ARTIFACT_S3_AWS_ACCESS_KEY_ID
79- aws-secret-access-key : env_CONTEXT_ARTIFACT_S3_AWS_SECRET_ACCESS_KEY
80- aws-region : env_CONTEXT_ARTIFACT_S3_AWS_REGION
81- arguments : ' --metadata "{\"x-amz-artifact-id\": \"${CIRCLE_SHA1}\" }"'
82-
83- upload_checksum :
84- description : " upload artifact checksum to s3"
85- steps :
86- - s3/copy :
87- from : artifact-info.txt
88- to : ' s3://${CONTEXT_ARTIFACT_S3_BUCKET}/${CIRCLE_PROJECT_REPONAME}/'
89- aws-access-key-id : env_CONTEXT_ARTIFACT_S3_AWS_ACCESS_KEY_ID
90- aws-secret-access-key : env_CONTEXT_ARTIFACT_S3_AWS_SECRET_ACCESS_KEY
91- aws-region : env_CONTEXT_ARTIFACT_S3_AWS_REGION
92-
93- docker_build_push :
58+ docker :
9459 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"
10560 steps :
10661 - setup_remote_docker
107- - run :
62+ - run :
10863 name : Building docker image
10964 command : |
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 >> .
111- - run :
65+ docker build -t ${DOCKHUB_ORGANISATION}/binary-static-webtrader:beta-${CIRCLE_SHA1} .
66+ - run :
11267 name : Pushing Image to docker hub
11368 command : |
11469 echo $DOCKERHUB_PASSWORD | docker login -u $DOCKERHUB_USERNAME --password-stdin
115- docker push ${DOCKHUB_ORGANISATION}/binary-static-webtrader
70+ docker push ${DOCKHUB_ORGANISATION}/binary-static-webtrader:beta-${CIRCLE_SHA1}
71+
11672 k8s_deploy :
11773 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}"
12574 steps :
12675 - k8s/install-kubectl
127- - run :
128- name : Deploying to k8s cluster for service << parameters.k8s_svc_name >>
76+ - run :
77+ name : Deploying to k8s cluster for service binary-webtrader
12978 command : |
130- for SERVER_ID in {1..5}
131- do
132- KUBE_SERVER_REF="KUBE_SERVER_$SERVER_ID"
133- SERVICEACCOUNT_TOKEN_REF="SERVICEACCOUNT_TOKEN_$SERVER_ID"
134- CA_CRT_REF="CA_CRT_$SERVER_ID"
135- if [ ! -z "${!KUBE_SERVER_REF}" ]
136- then
137- echo "Deploying to cluster $SERVER_ID"
138- CA_CRT="${!CA_CRT_REF}"
139- KUBE_SERVER="${!KUBE_SERVER_REF}"
140- SERVICEACCOUNT_TOKEN="${!SERVICEACCOUNT_TOKEN_REF}"
141- echo $CA_CRT | base64 --decode > ca.crt
142- 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:<< parameters.docker_tag >>
143- fi
144- done
79+ echo $CA_CRT | base64 --decode > ca.crt
80+ kubectl --server=${KUBE_SERVER} --certificate-authority=ca.crt --token=$SERVICEACCOUNT_TOKEN set image deployment/webtrader-beta-binary-com webtrader-beta-binary-com=${DOCKHUB_ORGANISATION}/binary-static-webtrader:beta-${CIRCLE_SHA1}
81+
14582jobs :
146- release_development :
83+ release :
14784 docker :
14885 - image : circleci/node:12.13.0-stretch
14986 steps :
15087 - git_checkout_from_cache
15188 - npm_install
15289 - build
153- - docker_build_push
90+ - docker
15491 - k8s_deploy
155- release_production :
156- docker :
157- - image : circleci/node:12.13.0-stretch
158- steps :
159- - git_checkout_from_cache
160- - npm_install
161- - build
162- - compress
163- - upload_artifact # uploading the built code to s3 to create a backup of key services separate from Kubernetes deployment
164- - upload_checksum # uploading compressed artifact checksum to cross match artifact fingerprint before actual deployment
165- - docker_build_push :
166- docker_latest_tag : " latest"
167- docker_tag : " ${CIRCLE_SHA1}"
168- nginx_location : " /usr/share/nginx/html"
169- - k8s_deploy :
170- k8s_svc_name : " webtrader-binary-com"
171- docker_tag : " ${CIRCLE_SHA1}"
172-
92+
17393workflows :
174- release_development :
175- jobs :
176- - release_development :
94+ release :
95+ jobs :
96+ - release :
17797 filters :
17898 branches :
179- only : /^development$/
180- context : binary-frontend-artifact-upload
181- release_production :
182- jobs :
183- - release_production :
184- filters :
185- branches :
186- only : /^master$/
187- context : binary-frontend-artifact-upload
99+ only : /^development$/
100+
0 commit comments