version: 2 jobs: build: &shared-config docker: - image: circleci/node:lts-fermium working_directory: ~/repo steps: - checkout - restore_cache: keys: - dependencies-{{ checksum "package.json" }}-v1 - dependencies- - run: yarn install - save_cache: paths: - node_modules key: dependencies-{{ checksum "package.json" }}-v1 testUnit: <<: *shared-config steps: - checkout - restore_cache: key: dependencies-{{ checksum "package.json" }}-v1 - run: yarn test:unit docker-build-and-push: working_directory: /dockerapp docker: - image: docker:17.05.0-ce-git steps: - checkout - setup_remote_docker: version: 19.03.13 - run: name: Build application Docker image command: docker build -t app . - deploy: name: Publish application to docker hub command: | docker login -e $DOCKER_HUB_EMAIL -u $DOCKER_HUB_USER_ID -p $DOCKER_HUB_PWD docker tag app $DOCKER_HUB_USER_ID/tp_final_backend_six:$CIRCLE_BUILD_NUM docker tag app $DOCKER_HUB_USER_ID/tp_final_backend_six:latest docker push $DOCKER_HUB_USER_ID/tp_final_backend_six:$CIRCLE_BUILD_NUM docker push $DOCKER_HUB_USER_ID/tp_final_backend_six:latest workflows: version: 2 build-test-and-lint: jobs: - build - testUnit: requires: - build - docker-build-and-push: requires: - build - testUnit filters: branches: only: main