Skip to content

Commit

Permalink
Merge pull request #163 from Mahboobeh-binary/new-release-proc
Browse files Browse the repository at this point in the history
New release proc
  • Loading branch information
sysadmin-frontend-binary authored Jul 15, 2020
2 parents 30b466c + f401ee9 commit cce842a
Showing 1 changed file with 67 additions and 44 deletions.
111 changes: 67 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 @@ -48,7 +48,7 @@ commands:
key: bundle-v1-{{ checksum "Gemfile" }}
paths:
- "modules"
release:
build:
description: "Build Jekyll site"
steps:
- restore_cache:
Expand All @@ -64,48 +64,40 @@ commands:
key: _site-v1-{{ .Revision }}
paths:
- _site
compress:
description: "Compress"
deploy:
description: "Deploy to static branches"
parameters:
target_branch:
type: string
steps:
- checkout
- attach_workspace:
at: _site
- run:
name: Tag build
command: echo "<< parameters.target_branch >> $(date -u +'%Y-%m-%dT%H:%M:%SZ')" > _site/version
- run:
name: "Compress"
name: Install and configure dependencies
command: |
pushd _site/
tar -cvf artifact.tar *
mv artifact.tar ${OLDPWD}/
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt install nodejs
sudo npm install [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_build:
name: Deploy docs to gh-pages branch
command: node ./node_modules/gh-pages/bin/gh-pages -d _site --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-developers:${CIRCLE_SHA1} -t ${DOCKHUB_ORGANISATION}/binary-static-developers:latest .
docker_push:
description: "Push image to docker hub"
steps:
- run:
name: Pushing Image to docker hub
command: |
Expand Down Expand Up @@ -134,27 +126,58 @@ commands:
kubectl --server=${KUBE_SERVER} --certificate-authority=ca.crt --token=$SERVICEACCOUNT_TOKEN set image deployment/developers-binary-com developers-binary-com=${DOCKHUB_ORGANISATION}/binary-static-developers:${CIRCLE_SHA1}
fi
done
notify_slack:
description: "Notify slack"
steps:
- slack/status:
include_project_field: false
failure_message: "Release failed for developers.binary.com with version *$(cat _site/version)*"
success_message: "Release succeeded for developers.binary.com with version *$(cat _site/version)*"
webhook: ${SLACK_WEBHOOK}
jobs:
release:
build:
docker:
- image: circleci/ruby:2.6.5
steps:
- git_checkout_from_cache
- bundle_install
- release
- 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
- build
release_production:
docker:
- image: circleci/ruby:2.6.5
steps:
- git_checkout_from_cache
- bundle_install
- build
- deploy:
target_branch: "production"
- notify_slack
release_aws_production:
docker:
- image: circleci/ruby:2.6.5
steps:
- git_checkout_from_cache
- bundle_install
- build
- docker_build_push
- k8s_deploy

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

0 comments on commit cce842a

Please sign in to comment.