version: 2 jobs: build: docker: - image: circleci/node:10.4-browsers working_directory: ~/repo steps: - checkout - restore_cache: keys: - v1-dependencies-{{ checksum "package.json" }} - v1-dependencies- - run: name: Install Dependancies command: yarn - save_cache: key: v1-dependencies-{{ checksum "package.json" }} paths: - node_modules - run: name: Build command: yarn build -c ${CIRCLE_BRANCH} - persist_to_workspace: root: ./ paths: - dist/ZaksCode - store_artifacts: path: ./dist/ZaksCode deploy: docker: - image: google/cloud-sdk:latest working_directory: ~/repo steps: - checkout - attach_workspace: at: ./ - run: name: Authenticate GCP command: | echo $GCLOUD_SERVICE_KEY > key.json gcloud auth activate-service-account --key-file key.json - run: name: Deploy command: gsutil cp -r dist/ZaksCode/* gs://staging.zakscode.com deploy-prod: docker: - image: google/cloud-sdk:latest working_directory: ~/repo steps: - checkout - attach_workspace: at: ./ - run: name: Authenticate GCP command: | echo $GCLOUD_SERVICE_KEY > key.json gcloud auth activate-service-account --key-file key.json - run: name: Depoly command: gsutil cp -r dist/ZaksCode/* gs://zaks-code.appspot.com workflows: version: 2 build_and_deply: jobs: - build - deploy: requires: - build filters: branches: only: master - deploy-prod: requires: - build filters: branches: only: production