Skip to content
This repository was archived by the owner on Feb 22, 2024. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 57 additions & 17 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,14 +38,14 @@ commands:
- restore_cache:
name: Restore npm cache
keys:
- npm-v1-{{ checksum "package.json" }}
- npm-v1-{{ checksum "package-lock.json" }}
- npm-v1-
- run:
name: Install npm modules
command: npm install
command: npm ci
- save_cache:
name: Save NPM cache
key: npm-v1-{{ checksum "package.json" }}
key: npm-v1-{{ checksum "package-lock.json" }}
paths:
- "node_modules"

Expand Down Expand Up @@ -90,27 +90,45 @@ commands:
aws-secret-access-key: env_CONTEXT_ARTIFACT_S3_AWS_SECRET_ACCESS_KEY
aws-region: env_CONTEXT_ARTIFACT_S3_AWS_REGION

docker:
docker_build_push:
description: "Build and Push image to docker hub"
parameters:
docker_tag:
type: string
default: "beta-${CIRCLE_SHA1}"
docker_latest_tag:
type: string
default: "beta-latest"
nginx_location:
type: string
default: "/usr/share/nginx/html/beta"
steps:
- setup_remote_docker
- run:
name: Building docker image
command: |
docker build -t ${DOCKHUB_ORGANISATION}/binary-static-webtrader:${CIRCLE_SHA1} -t ${DOCKHUB_ORGANISATION}/binary-static-webtrader:latest .
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 >> .
- run:
name: Pushing Image to docker hub
command: |
echo $DOCKERHUB_PASSWORD | docker login -u $DOCKERHUB_USERNAME --password-stdin
docker push ${DOCKHUB_ORGANISATION}/binary-static-webtrader:${CIRCLE_SHA1}
docker push ${DOCKHUB_ORGANISATION}/binary-static-webtrader:latest

docker push ${DOCKHUB_ORGANISATION}/binary-static-webtrader
k8s_deploy:
description: "Deploy to k8s cluster"
parameters:
k8s_svc_name:
type: string
default: "webtrader-beta-binary-com"
docker_tag:
type: string
default: "beta-${CIRCLE_SHA1}"
k8s-deployment:
type: string
default: "webtrader-beta-binary-com"
steps:
- k8s/install-kubectl
- run:
name: Deploying to k8s cluster for service binary-webtrader
name: Deploying to k8s cluster for service << parameters.k8s_svc_name >>
command: |
for SERVER_ID in {1..5}
do
Expand All @@ -124,11 +142,20 @@ commands:
KUBE_SERVER="${!KUBE_SERVER_REF}"
SERVICEACCOUNT_TOKEN="${!SERVICEACCOUNT_TOKEN_REF}"
echo $CA_CRT | base64 --decode > ca.crt
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}
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 >>
fi
done
jobs:
release:
release_development:
docker:
- image: circleci/node:12.13.0-stretch
steps:
- git_checkout_from_cache
- npm_install
- build
- docker_build_push
- k8s_deploy
release_production:
docker:
- image: circleci/node:12.13.0-stretch
steps:
Expand All @@ -138,14 +165,27 @@ jobs:
- compress
- upload_artifact # uploading the built code to s3 to create a backup of key services separate from Kubernetes deployment
- upload_checksum # uploading compressed artifact checksum to cross match artifact fingerprint before actual deployment
- docker
- k8s_deploy
- docker_build_push:
docker_latest_tag: "latest"
docker_tag: "${CIRCLE_SHA1}"
nginx_location: "/usr/share/nginx/html"
- k8s_deploy:
k8s_svc_name: "webtrader-binary-com"
docker_tag: "${CIRCLE_SHA1}"
k8s-deployment: "webtrader-binary-com"

workflows:
release:
jobs:
- release:
context: binary-frontend-artifact-upload
release_development:
jobs:
- release_development:
filters:
branches:
only: /^development$/
context: binary-frontend-artifact-upload
release_production:
jobs:
- release_production:
filters:
branches:
only: /^master$/
context: binary-frontend-artifact-upload
4 changes: 3 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
ARG NGINX_LOCATION=/usr/share/nginx/html/beta
FROM nginx:alpine
COPY ./dist/compressed /usr/share/nginx/html
ARG NGINX_LOCATION
COPY ./dist/compressed $NGINX_LOCATION
COPY ./default.conf /etc/nginx/conf.d/default.conf
Loading