version: 2 jobs: install: &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 build: <<: *shared-config steps: - checkout - restore_cache: keys: - dependencies-{{ checksum "package.json" }}-v1 - dependencies- - run: yarn build front-netlify-deploy: <<: *shared-config steps: - checkout - attach_workspace: at: /tmp - run: name: Install netlify command: | yarn add -D netlify-cli - run: name: Deploy app command: yarn netlify deploy --auth $NETLIFY_AUTH_TOKEN --dir /tmp/repo --site $NETLIFY_SITE_ID --prod docker-build-and-push: working_directory: /dockerapp docker: - image: docker:17.05.0-ce-git steps: - checkout - setup_remote_docker - run: name: Build application Docker image command: | docker build --cache-from=app -t app . - deploy: name: Publish application to docker hub command: | docker login -e $PROD_EMAIL -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD docker tag app $DOCKERHUB_USERNAME/$DOCKERHUB_APP_NAME:$CIRCLE_BUILD_NUM docker tag app $DOCKERHUB_USERNAME/$DOCKERHUB_APP_NAME:latest docker push $DOCKERHUB_USERNAME/$DOCKERHUB_APP_NAME:$CIRCLE_BUILD_NUM docker push $DOCKERHUB_USERNAME/$DOCKERHUB_APP_NAME:latest workflows: version: 2 build-test-and-lint: jobs: - build - lint: requires : - build - back-test-unit: requires: - build - back-test-e2e: requires: - build - back-deploy-heroku: requires: - build - lint - back-test-unit - back-test-e2e filters: branches: only: main - server-doc-build: requires: - build - lint - back-test-e2e - back-test-unit filters: branches: only: main - server-doc-deploy: requires: - server-doc-build filters: branches: only: main - docker-build-and-push: requires: - build - lint - back-test-e2e - back-test-unit filters: branches: only: main