version: 2
machine:
  services:
    - docker
jobs:
  build:
    docker:
      - image: circleci/node:8.17
    environment:
      - NPM_CONFIG_LOGLEVEL: warn
    working_directory: ~/repo
    steps:
      - checkout
      - setup_remote_docker:
          docker_layer_caching: true
      - restore_cache:
          keys:
            - v1-dependencies-{{ checksum "package-lock.json" }}
      - run:
          name: Installing dependencies
          command: npm ci
      - run:
          name: Pruning dependencies
          command: npm prune
      - save_cache:
          paths:
            - node_modules
          key: v1-dependencies-{{ checksum "package-lock.json" }}
      - run:
          name: Compiling code
          command: npm run build
      - run:
          name: Testing code
          command: npm run test
      - run:
          name: Linting code
          command: npm run lint
      - run:
          name: Checking code duplication
          command: npm run duplication
      - run:
          name: Build docker image
          command: |
            echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
            docker build -f ./docker/Dockerfile --rm=false -t kubejs/kube-ts-react-client:$CIRCLE_SHA1 -t kubejs/kube-ts-react-client:latest .
            docker push kubejs/kube-ts-react-client:latest
            docker push kubejs/kube-ts-react-client:$CIRCLE_SHA1
      - run:
          name: Semantic Release
          command: npm run semantic-release
      - run:
          name: Install envsubst
          command: |
            sudo apt-get update && sudo apt-get -y install gettext-base
      - run:
          name: Install kubectl
          command: |
            curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
            chmod u+x ./kubectl
            sudo mv ./kubectl /usr/local/bin/kubectl
      - run: 
          name: Install helm
          command: |
            sudo curl -L https://storage.googleapis.com/kubernetes-helm/helm-v2.12.1-linux-amd64.tar.gz | tar xz && sudo mv linux-amd64/helm /bin/helm && sudo rm -rf linux-amd64
      - run:
          name: Deploy Code
          command: ~/repo/scripts/deploy.sh
