version: 2.1 jobs: build: docker: - image: circleci/node:dubnium-browsers steps: - checkout - restore_cache: keys: - dependencies-{{ checksum "package.json" }}-{{ .Environment.CACHE_VERSION }} - dependencies- - run: npm install - save_cache: paths: - node_modules key: dependencies-{{ checksum "package.json" }}-{{ .Environment.CACHE_VERSION }} docker_build: environment: IMAGE_NAME: sgttabouret/devops-final-front docker: - image: circleci/buildpack-deps:stretch steps: - checkout - setup_remote_docker - run: docker image build --tag $IMAGE_NAME:app . - run: docker save -o image.tar $IMAGE_NAME - persist_to_workspace: root: . paths: - ./image.tar docker_push: environment: IMAGE_NAME: sgttabouret/devops-final-front docker: - image: circleci/buildpack-deps:stretch steps: - attach_workspace: at: /tmp/workspace - setup_remote_docker - run: docker load -i /tmp/workspace/image.tar - run: name: Login and push to DockerHub command: | echo "$DOCKERHUB_PASS" | docker login --username sgttabouret --password-stdin docker tag $IMAGE_NAME:app $IMAGE_NAME:$CIRCLE_BUILD_NUM docker tag $IMAGE_NAME:app $IMAGE_NAME:latest docker push $IMAGE_NAME:$CIRCLE_BUILD_NUM docker push $IMAGE_NAME:latest netlify_build: docker: - image: circleci/node:dubnium-browsers working_directory: ~/repo steps: - checkout - restore_cache: keys: - dependencies-{{ checksum "package.json" }}-{{ .Environment.CACHE_VERSION }} - run: npm install - run: npm run build - run: name: Copy build to workspace command: | cp dist/ /tmp/dist -r - store_artifacts: path: /tmp/dist - persist_to_workspace: root: /tmp paths: - dist netlify_deploy: docker: - image: circleci/node:dubnium-browsers working_directory: ~/devops-final-dront-undev steps: - attach_workspace: at: /tmp - run: name: Deploy app command: | ls -al /tmp sudo npm install -g --silent netlify-cli netlify deploy --prod --auth $NETLIFY_AUTH_TOKEN --dir=/tmp/dist --site $SITEID workflows: build_deploy_netlify: jobs: - build - docker_build: requires: - build - docker_push: requires: - docker_build context: - back_final - netlify_build: requires: - build - netlify_deploy: requires: - netlify_build context: - back_final