executors: node: docker: - image: circleci/node:10.14.2 aliases: restore_cache: &restore_cache restore_cache: keys: - yarn-cache-netlify-{{ checksum "yarn.lock" }} install_node_modules: &install_node_modules run: command: yarn install check_formatting: &check_formatting run: command: yarn add --dev --exact prettier && yarn format:write && yarn format:check save_cache: &save_cache save_cache: key: yarn-cache-netlify-{{ checksum "yarn.lock" }} paths: - ./node_modules version: 2.1 orbs: node: circleci/node@3.0.0 jobs: test: executor: node steps: - checkout - <<: *restore_cache - <<: *install_node_modules - <<: *save_cache - run: name: Test command: yarn run test build: executor: node steps: - checkout - <<: *check_formatting - <<: *restore_cache - <<: *install_node_modules - run: name: Build command: yarn run build - persist_to_workspace: root: ./ paths: - public deploy: executor: node steps: - checkout - attach_workspace: at: ./ - <<: *restore_cache - <<: *install_node_modules - run: name: Install netlify-cli command: yarn global add netlify-cli - run: name: Deploy to Netlify command: netlify deploy --dir=./public -p workflows: test_build_and_deploy: jobs: - test: filters: branches: ignore: - gh-pages - build: requires: - test - deploy: requires: - build filters: branches: only: main