diff --git a/.circleci/config.yml b/.circleci/config.yml index ef93afc..49ff050 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,39 +1,86 @@ version: 2.1 workflows: - build_and_test: - jobs: - - build - - lint: - requires - - build + build_and_test: + jobs: + - build + - lint: + requires: + - build + - test: + requires: + - build + - e2e: + requires: + - build + - build_docker: + requires: + - e2e + - lint + - test + filters: + branches: + only: + - main + - publish_image: + context: + - DOCKER + requires: + - build_docker + filters: + branches: + only: + - main jobs: - build: - docker: - - image: cimg/node:12.18 # the primary container, where your job's commands are run - steps: - - checkout - - run: - name: Install dependencies - command: yarn global add node-gyp && yarn install - - restore_cache: - name: Restore Yarn Package Cache - key: npm-v1-dependencies-{{ checksum "yarn.lock" }} - - run: - name: Install Dependencies - command: yarn install --immutable - - save_cache: - name: Save Yarn Package Cache - key: npm-v1-dependencies-{{ checksum "yarn.lock" }} - paths: - - ~/.cache/yarn - lint: - docker: - - image: cimg/node:12.18 - steps: - - checkout - - restore_cache: - name: Restore Yarn Package Cache - key: npm-v1-dependencies-{{ checksum "yarn.lock" }} - - run: - name: "Lint Code" - command: yarn lint && yarn format:check \ No newline at end of file + build: + docker: + - image: cimg/node:12.18 + 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 + lint: + docker: + - image: cimg/node:12.18 + steps: + - checkout + - restore_cache: + key: yarn-packages-v2{{ checksum "yarn.lock" }} + - run : yarn lint && yarn format:check + test: + docker: + - image: cimg/node:12.18 + steps: + - checkout + - restore_cache: + key: yarn-packages-v2{{ checksum "yarn.lock" }} + - run : yarn test:ci + e2e: + docker: + - image: cimg/node:12.18 + environment: + DATABASE_URL: "postgres://e2e:test@localhost:5432/psdb" + API_PORT: 3000 + API_HOST: localhost + API_PROTOCOL: http + JWT_SECRET: yeet + - image: circleci/postgres:9.6.2-alpine + 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 \ No newline at end of file