Skip to content
This repository has been archived by the owner on Feb 22, 2024. It is now read-only.

Commit

Permalink
Merge pull request #138 from Mahboobeh-binary/new-release-infra
Browse files Browse the repository at this point in the history
New release infra
  • Loading branch information
sysadmin-frontend-binary authored Jul 15, 2020
2 parents 37e2d9a + d224a87 commit 475c9bc
Showing 1 changed file with 73 additions and 47 deletions.
120 changes: 73 additions & 47 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 @@ -39,7 +39,7 @@ commands:
command: |
sudo apt-get update && sudo apt-get install -y ruby-full
sudo gem install sass
npm_install_from_cache:
npm_install:
description: "npm install and save cache"
steps:
- restore_cache:
Expand All @@ -55,54 +55,44 @@ commands:
name: Save npm cache
paths:
- "node_modules"
npm_build:
build:
description: "Grunt build the project"
steps:
- run:
name: "Build binary-style"
command: npm run build
compress:
description: "Compress"
deploy:
description: "Deploy to static branches"
parameters:
target_branch:
type: string
steps:
- checkout
- attach_workspace:
at: dist
- run:
name: Tag build
command: echo "<< parameters.target_branch >> $(date -u +'%Y-%m-%dT%H:%M:%SZ')" > dist/version
- run:
name: "Compress"
name: Install and configure dependencies
command: |
pushd dist/
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 artifact to s3"
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_build:
name: Deploy docs to gh-pages branch
command: gh-pages -d dist --branch << parameters.target_branch >> --message '[skip ci]'
docker_build_push:
description: "Build Docker image"
steps:
- setup_remote_docker
- run:
name: Building docker image
command: |
docker build -t ${DOCKHUB_ORGANISATION}/binary-static-style:${CIRCLE_SHA1} -t ${DOCKHUB_ORGANISATION}/binary-static-style:latest .
docker_push:
description: "Push image to docker hub"
steps:
- run:
name: Pushing Image to docker hub
command: |
Expand Down Expand Up @@ -130,29 +120,65 @@ commands:
echo $CA_CRT | base64 --decode > ca.crt
kubectl --server=${KUBE_SERVER} --certificate-authority=ca.crt --token=$SERVICEACCOUNT_TOKEN set image deployment/style-binary-com style-binary-com=${DOCKHUB_ORGANISATION}/binary-static-style:${CIRCLE_SHA1}
fi
done
done
notify_slack:
description: "Notify slack"
steps:
- slack/status:
include_project_field: false
failure_message: "Release failed for style.binary.com with version *$(cat dist/version)*"
success_message: "Release succeeded for style.binary.com with version *$(cat dist/version)*"
webhook: ${SLACK_WEBHOOK}
jobs:
release:
build:
docker:
- image: circleci/node:9.9.0-stretch
steps:
- git_checkout_from_cache
- install_deps
- npm_install
- build
release_production:
docker:
- image: circleci/node:9.9.0-stretch
steps:
- git_checkout_from_cache
- install_deps
- 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
- install_deps
- npm_install_from_cache
- npm_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_build
- docker_push
- npm_install
- build
- docker_build_push
- k8s_deploy

workflows:
build:
jobs:
- build:
filters:
branches:
ignore: /^master$/
release:
jobs:
- release:
- release_production:
filters:
branches:
ignore: /.*/
tags:
only: /^production.*/
- release_aws_production:
filters:
branches:
only: /^master$/
context: binary-frontend-artifact-upload # need to change the context name here

ignore: /.*/
tags:
only: /^production.*/
context: binary-frontend-artifact-upload

0 comments on commit 475c9bc

Please sign in to comment.