version: 2.1 jobs: build: docker: - image: cimg/node:12.0 steps: - checkout - restore_cache: key: yarn-packages-v2{{ checksum "yarn.lock" }} - run: yarn global add node-gyp && yarn install - save_cache: key: yarn-packages-v2{{ checksum "yarn.lock" }} paths: - ./node_modules check_format: docker: - image: circleci steps: - checkout - restore_cache: key: yarn-packages-v2{{ checksum "yarn.lock" }} - run : yarn lint && yarn format:check test: docker: - image: cimg/node:12.0 steps: - checkout - restore_cache: key: yarn-packages-v2{{ checksum "yarn.lock" }} - run : yarn test:ci test_e2e: docker: - image: cimg/node:12.0 - image: circleci/postgres environment: POSTGRES_USER: e2e POSTGRES_DB: psdb POSTGRES_PASSWORD: test steps: - checkout - restore_cache: key: yarn-packages-v2{{ checksum "yarn.lock" }} - run: name: Waiting for POSTGRES command: dockerize -wait tcp://localhost:5432 -timeout 1m - run: name: Launching e2e test command: yarn test:e2e environment: DATABASE_URL: "postgres://e2e:test@localhost:5432/psdb" API_PORT: 3000 API_HOST: "localhost" API_PROTOCOL: "http" JWT_SECRET: "youwontguess" workflows: build_and_test: jobs: - build - check_format: requires: - build - test: requires: - build - test_e2e: requires: - build