version: 2.1 workflows: tp: jobs: - hello - yarninstall - lint: requires: - yarninstall - unittest: requires: - yarninstall - e2e - dockerbuild: requires: - lint - unittest - e2e filters: branches: only: main - dockerpush: requires: - dockerbuild filters: branches: only: main jobs: hello: docker: - image: circleci/node:12 steps: - checkout - run: echo "hello world" yarninstall: docker: - image: circleci/node:12 steps: - checkout - restore_cache: key: yarn-packages-{{ checksum "yarn.lock" }} - run: yarn global add node-gyp && yarn install - save_cache: key: yarn-packages-{{ checksum "yarn.lock" }} paths: - ./node_modules lint: docker: - image: circleci/node:12 steps: - checkout - restore_cache: key: yarn-packages-{{ checksum "yarn.lock" }} - run: yarn lint && yarn format:check unittest: docker: - image: circleci/node:12 steps: - checkout - restore_cache: key: yarn-packages-{{ checksum "yarn.lock" }} - run: yarn test:ci e2e: docker: - image: circleci/node:12 # the primary container, where your job's commands are run environment: DATABASE_URL: postgres://psqluser:psqlpassword@localhost:5432/psdb JWT_SECRET: hello API_PORT: 3000 API_HOST: localhost API_PROTOCOL: http - image: circleci/postgres:9.6.2-alpine environment: POSTGRES_USER: psqluser POSTGRES_PASSWORD: psqlpassword POSTGRES_DB: psdb steps: - checkout - restore_cache: key: yarn-packages-{{ checksum "yarn.lock" }} - run: yarn test:e2e dockerbuild: docker: - image: circleci/buildpack-deps:stretch environment: IMAGE_NAME: gianni-building-on-ci steps: - checkout - setup_remote_docker - run: docker build -t gianni-building-on-ci:latest . dockerpush: environment: IMAGE_NAME: gianni-building-on-ci docker: - image: circleci/node:12 - image: circleci/buildpack-deps:stretch environment: DOCKERHUB_USERNAME: giannigiux DOCKERHUB_PASS: testtpdocker steps: - setup_remote_docker - run: docker login -u "giannigiux" -p "testtpdocker" - run: docker push gianni-building-on-ci:latest