This repository has been archived by the owner on Feb 22, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 42
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #138 from Mahboobeh-binary/new-release-infra
New release infra
- Loading branch information
Showing
1 changed file
with
73 additions
and
47 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" | ||
|
@@ -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: | ||
|
@@ -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: | | ||
|
@@ -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 |