version: 2.1 workflows: build_and_test: jobs: - build - lint: requires: - build - tests: requires: - build - db: requires: - build jobs: build: docker: - image: cimg/node:12.18 steps: - checkout - restore_cache: key: yarn-packages-v3{{ checksum "yarn.lock" }} - run: yarn global add node-gyp && yarn install - save_cache: key: yarn-packages-v3{{ checksum "yarn.lock" }} paths: - ./node_modules tests: docker: - image: cimg/node:12.18 steps: - checkout - restore_cache: key: yarn-packages-v3{{ checksum "yarn.lock" }} - run : yarn test:ci - save_cache: key: yarn-packages-v3{{ checksum "yarn.lock" }} paths: - ./node_modules lint: docker: - image: cimg/node:12.18 steps: - checkout - restore_cache: key: yarn-packages-v3{{ checksum "yarn.lock" }} - run : yarn lint && yarn format:check - save_cache: key: yarn-packages-v3{{ checksum "yarn.lock" }} paths: - ./node_modules db: docker: - image: cimg/node:12.18 environment: DATABASE_URL: "postgres://psqluer:test@localhost:5432/psdb" API_PORT: 3000 API_HOST: localhost API_PROTOCOL: http JWT_SECRET: some string yo want - image: circleci/postgres:9.6.2-alpine environment: POSTGRES_USER: psqluer POSTGRES_DB: psdb steps: - checkout - restore_cache: key: yarn-packages-v3{{ checksum "yarn.lock" }} - run: command: yarn test:e2e - save_cache: key: yarn-packages-v3{{ checksum "yarn.lock" }} paths: - ./node_modules