name: Web App Build & Deploy
on:
  push:
    branches:
      - mainnet
      - testnet
      - dev
    paths:
      - "web-app/**"
jobs:
  main:
    runs-on: ubuntu-latest
    steps:
      - name: Install kubectl
        uses: azure/setup-kubectl@v2.0
        with:
          version: "v1.23.6" # default is latest stable
        id: install

      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: us-east-1

      - name: Login to Amazon ECR
        id: login-ecr
        uses: aws-actions/amazon-ecr-login@v1

      - name: Install kubectl
        uses: azure/setup-kubectl@v2.0

      - name: Set kubectl context
        uses: azure/k8s-set-context@v3
        with:
          method: kubeconfig
          kubeconfig: ${{ secrets.KUBECONFIG }}
          context: microk8s

      - name: Check k8s connection
        run: kubectl get pods

      - name: Store build time
        id: build-time
        shell: bash
        run: >-
          echo "::set-output name=time::$(date +%s)"

      - name: Check out the repo
        uses: actions/checkout@v2

        # Set environment variables dynamically based on the branch
      - name: Set Environment Variables
        id: set-env
        run: |
          if [ "${{ github.ref }}" == "refs/heads/mainnet" ]; then
            echo "API_URL=https://index.network/api" >> $GITHUB_ENV
          else
            echo "API_URL=https://dev.index.network/api" >> $GITHUB_ENV
          fi

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v1

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1

      - name: Build, tag, and push image to Amazon ECR
        working-directory: ./web-app
        env:
          DOCKER_TAG: indexnetwork/web3-web-app:${{ steps.build-time.outputs.time }}
          DOCKER_REGISTRY: 236785930124.dkr.ecr.us-east-1.amazonaws.com
        run: |
          docker build --build-arg API_URL=${API_URL} -t $DOCKER_TAG .
          docker tag $DOCKER_TAG $DOCKER_REGISTRY/$DOCKER_TAG
          docker push $DOCKER_REGISTRY/$DOCKER_TAG
          docker tag $DOCKER_TAG $DOCKER_REGISTRY/indexnetwork/web3-web-app:latest-${GITHUB_REF#refs/heads/}
          docker push $DOCKER_REGISTRY/indexnetwork/web3-web-app:latest-${GITHUB_REF#refs/heads/}

      - name: Deploy
        run: |-
          kubectl set image deployment/frontend frontend=236785930124.dkr.ecr.us-east-1.amazonaws.com/indexnetwork/web3-web-app:${{ steps.build-time.outputs.time }} --namespace env-${GITHUB_REF#refs/heads/}