version: 2.1 jobs: build: docker: - image: circleci/node:dubnium-browsers steps: - checkout - restore_cache: keys: - yarn-packages-{{ checksum "yarn.lock" }}-{{ .Environment.CACHE_VERSION }} - yarn-packages - run: yarn global add node-gyp && yarn install - save_cache: key: yarn-packages-{{ checksum "yarn.lock" }}-{{ .Environment.CACHE_VERSION }} paths: - node_modules test: docker: - image: circleci/node:dubnium-browsers steps: - checkout - restore_cache: keys: - yarn-packages-{{ checksum "yarn.lock" }}-{{ .Environment.CACHE_VERSION }} - run: name: Start test command: yarn test build-in-prod: docker: - image: circleci/node:dubnium-browsers steps: - checkout - restore_cache: keys: - yarn-packages-{{ checksum "yarn.lock" }}-{{ .Environment.CACHE_VERSION }} - run: name: Build command : yarn run build - run: name: Copy build command: | cp dist/ /tmp/dist -r - store_artifacts: path: /tmp/dist - persist_to_workspace: root: /tmp paths: - dist docker-build-push: environment: IMAGE_NAME: grennrich/devopstpfinal-front working_directory: /dockerapp docker: - image: docker:17.05.0-ce-git steps: - checkout - setup_remote_docker - run: command: | docker build --cache-from=app -t app . - run: name: Login and push to DockerHub command: | docker login -u grennrich -p $DOCKER_HUB_PASSWORD docker tag app $IMAGE_NAME:$CIRCLE_BUILD_NUM docker tag app $IMAGE_NAME:latest docker push $IMAGE_NAME:$CIRCLE_BUILD_NUM docker push $IMAGE_NAME:latest deploy: docker: - image: circleci/node:dubnium-browsers working_directory: ~/deploy-netlfify steps: - attach_workspace: at: /tmp - run: name: Deploy on netlify command: | sudo npm install -g --silent netlify-cli netlify deploy --prod --auth $NETLIFY_TOKEN --dir=/tmp/dist --site $NETLIFY_SITE_ID workflows: build_deploy: jobs: - build - build-in-prod: requires: - build - deploy: context: netlify requires: - build-in-prod - docker-build-push: context: Docker requires: - build