version: 2 defaults: &defaults docker: - image: circleci/node:16.6.2 working_directory: ~/gatsby-starter-lumen jobs: install: <<: *defaults steps: - checkout - restore_cache: keys: - dependencies-{{ checksum "package-lock.json" }} - run: npm ci - save_cache: paths: - node_modules key: dependencies-{{ checksum "package-lock.json" }} lint: <<: *defaults steps: - checkout - restore_cache: keys: - dependencies-{{ checksum "package-lock.json" }} - run: npm run lint test: <<: *defaults steps: - checkout - restore_cache: keys: - dependencies-{{ checksum "package-lock.json" }} - run: npm run test --runInBand --no-cache coverage: <<: *defaults steps: - checkout - restore_cache: keys: - dependencies-{{ checksum "package-lock.json" }} - run: npm run test:coverage --runInBand --no-cache - save_cache: key: coverage-{{ .Environment.CIRCLE_SHA1 }} paths: - coverage codecov: <<: *defaults steps: - checkout - restore_cache: keys: - dependencies-{{ checksum "package-lock.json" }} - restore_cache: keys: - coverage-{{ .Environment.CIRCLE_SHA1 }} - run: npx codecov workflows: version: 2 test: jobs: - install - lint: requires: - install - test: requires: - install - coverage: requires: - install - codecov: requires: - coverage