Skip to content
This repository was archived by the owner on Feb 22, 2024. It is now read-only.
Merged
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
109 changes: 65 additions & 44 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
version: 2.1
orbs:
k8s: circleci/[email protected]
s3: circleci/[email protected]
slack: circleci/[email protected]
commands:
git_checkout_from_cache:
description: "Git checkout and save cache"
Expand Down Expand Up @@ -47,48 +47,37 @@ commands:
key: npm-v1-{{ checksum "package.json" }}
paths:
- "node_modules"

build:
description: "Build"
steps:
- run:
name: "yarn build"
command: yarn build

compress:
description: "Compress"
deploy:
description: "Deploy to static branches"
parameters:
target_branch:
type: string
steps:
- checkout
- attach_workspace:
at: lib
- run:
name: Tag build
command: echo "<< parameters.target_branch >> $(date -u +'%Y-%m-%dT%H:%M:%SZ')" > lib/version
- run:
name: "Compress"
name: Install and configure dependencies
command: |
pushd lib/
tar -cvf artifact.tar *
mv artifact.tar ${OLDPWD}/
sudo npm install -g [email protected]
git config user.email "[email protected]"
git config user.name "ci-build"
- add_ssh_keys:
fingerprints:
- "01:67:4a:6d:26:9c:70:c4:1a:60:91:88:d9:dd:f0:83"
- run:
name: "Tag commit id as artifact identifer"
command: echo "${CIRCLE_SHA1}" > artifact-info.txt

upload_artifact:
description: "upload build artifact to s3 bucket"
steps:
- s3/copy:
from: artifact.tar
to: 's3://${CONTEXT_ARTIFACT_S3_BUCKET}/${CIRCLE_PROJECT_REPONAME}/'
aws-access-key-id: env_CONTEXT_ARTIFACT_S3_AWS_ACCESS_KEY_ID
aws-secret-access-key: env_CONTEXT_ARTIFACT_S3_AWS_SECRET_ACCESS_KEY
aws-region: env_CONTEXT_ARTIFACT_S3_AWS_REGION
arguments: '--metadata "{\"x-amz-artifact-id\": \"${CIRCLE_SHA1}\" }"'

upload_checksum:
description: "upload artifact checksum to s3"
steps:
- s3/copy:
from: artifact-info.txt
to: 's3://${CONTEXT_ARTIFACT_S3_BUCKET}/${CIRCLE_PROJECT_REPONAME}/'
aws-access-key-id: env_CONTEXT_ARTIFACT_S3_AWS_ACCESS_KEY_ID
aws-secret-access-key: env_CONTEXT_ARTIFACT_S3_AWS_SECRET_ACCESS_KEY
aws-region: env_CONTEXT_ARTIFACT_S3_AWS_REGION
docker:
name: Deploy docs to gh-pages branch
command: gh-pages -d lib --branch << parameters.target_branch >> --message '[skip ci]'
docker_build_push:
description: "Build and Push image to docker hub"
steps:
- setup_remote_docker
Expand All @@ -102,7 +91,6 @@ commands:
echo $DOCKERHUB_PASSWORD | docker login -u $DOCKERHUB_USERNAME --password-stdin
docker push ${DOCKHUB_ORGANISATION}/binary-static-liveapi:${CIRCLE_SHA1}
docker push ${DOCKHUB_ORGANISATION}/binary-static-liveapi:latest

k8s_deploy:
description: "Deploy to k8s cluster"
steps:
Expand All @@ -125,26 +113,59 @@ commands:
kubectl --server=${KUBE_SERVER} --certificate-authority=ca.crt --token=$SERVICEACCOUNT_TOKEN set image deployment/liveapi-binary-com liveapi-binary-com=${DOCKHUB_ORGANISATION}/binary-static-liveapi:${CIRCLE_SHA1}
fi
done

notify_slack:
description: "Notify slack"
steps:
- slack/status:
include_project_field: false
failure_message: "Release failed for liveapi.binary.com with version *$(cat lib/version)*"
Comment thread
Mahboobeh-binary marked this conversation as resolved.
success_message: "Release succeeded for liveapi.binary.com with version *$(cat lib/version)*"
webhook: ${SLACK_WEBHOOK}
jobs:
release:
build:
docker:
- image: circleci/node:8.10.0-stretch
steps:
- git_checkout_from_cache
- npm_install
- build
release_production:
docker:
- image: circleci/node:8.10.0-stretch
steps:
- git_checkout_from_cache
- npm_install
- build
- deploy:
target_branch: "production"
- notify_slack
release_aws_production:
docker:
- image: circleci/node:9.9.0-stretch
steps:
- git_checkout_from_cache
- npm_install
- build
- 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
- docker
- k8s_deploy
- docker_build_push
- k8s_deploy
- notify_slack

workflows:
build:
jobs:
- build
release:
jobs:
- release:
- release_production:
filters:
branches:
ignore: /.*/
tags:
only: /^production.*/
- release_aws_production:
filters:
branches:
only: /^master$/
context: binary-frontend-artifact-upload # using context to retrieve shared secret from circle ci
ignore: /.*/
tags:
only: /^production.*/
context: binary-frontend-artifact-upload