Created
July 12, 2018 09:57
-
-
Save mousetree/bbacbe426982862c2b7d30e6a011a021 to your computer and use it in GitHub Desktop.
Multi environment CircleCI build
This file contains hidden or 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
version: 2 | |
jobs: | |
test: | |
docker: | |
- image: circleci/node:10 | |
working_directory: ~/repo | |
steps: | |
- checkout | |
- restore_cache: | |
keys: | |
- v1-dependencies-{{ checksum "package.json" }} | |
- v1-dependencies- | |
- run: | |
name: Install dependencies | |
command: npm install | |
- save_cache: | |
paths: | |
- node_modules | |
key: v1-dependencies-{{ checksum "package.json" }} | |
- run: | |
name: Run tests | |
command: npm test | |
- store_test_results: | |
path: test-results | |
deploy: | |
docker: | |
- image: google/cloud-sdk | |
environment: | |
- PROJECT_NAME: "my-app" | |
- GOOGLE_PROJECT_ID: "my-app" | |
- GOOGLE_COMPUTE_ZONE: "europe-west3-a" | |
- GOOGLE_CLUSTER_NAME: "cluster-1" | |
steps: | |
- checkout | |
- run: | |
name: Setup Google Cloud SDK | |
command: | | |
apt-get install -qq -y gettext | |
echo $GCLOUD_SERVICE_KEY > ${HOME}/gcloud-service-key.json | |
gcloud auth activate-service-account --key-file=${HOME}/gcloud-service-key.json | |
gcloud --quiet config set project ${GOOGLE_PROJECT_ID} | |
gcloud --quiet config set compute/zone ${GOOGLE_COMPUTE_ZONE} | |
gcloud --quiet container clusters get-credentials ${GOOGLE_CLUSTER_NAME} | |
- setup_remote_docker | |
- run: | |
name: Docker build and push | |
command: | | |
docker build \ | |
--build-arg COMMIT_REF=${CIRCLE_SHA1} \ | |
--build-arg BUILD_DATE=`date -u +%Y-%m-%dT%H:%M:%SZ` \ | |
--build-arg BUILD_BRANCH=${CIRCLE_BRANCH} \ | |
-t ${PROJECT_NAME} . | |
docker tag ${PROJECT_NAME} eu.gcr.io/${GOOGLE_PROJECT_ID}/${PROJECT_NAME}-${CIRCLE_BRANCH}:${CIRCLE_SHA1} | |
gcloud auth print-access-token | docker login -u oauth2accesstoken --password-stdin https://eu.gcr.io | |
docker push eu.gcr.io/${GOOGLE_PROJECT_ID}/${PROJECT_NAME}-${CIRCLE_BRANCH}:${CIRCLE_SHA1} | |
- run: | |
name: Deploy to Kubernetes | |
command: | | |
envsubst < ${HOME}/project/k8s.yml > ${HOME}/patched_k8s.yml | |
kubectl apply -n ${CIRCLE_BRANCH} -f ${HOME}/patched_k8s.yml | |
kubectl rollout -n ${CIRCLE_BRANCH} status deployment/${PROJECT_NAME} | |
workflows: | |
version: 2 | |
build_test_deploy: | |
jobs: | |
- test | |
- deploy: | |
requires: | |
- test | |
filters: | |
branches: | |
only: | |
- master | |
- develop |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment