---
name: QA Deploy

on:
  workflow_dispatch:
    inputs:
      image_extension:
        description: "Image tag extension"
        required: false

env:
  _QA_CLUSTER_RESOURCE_GROUP: "bw-env-qa"
  _QA_CLUSTER_NAME: "bw-aks-qa"
  _QA_K8S_NAMESPACE: "bw-qa"
  _QA_K8S_APP_NAME: "bw-web"

jobs:
  deploy:
    name: Deploy QA Web
    runs-on: ubuntu-20.04
    steps:
      - name: Checkout Repo
        uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f  # v2.3.4

      - name: Setup
        run: export PATH=$PATH:~/work/web/web

      - name: Login to Azure
        uses: Azure/login@77f1b2e3fb80c0e8645114159d17008b8a2e475a
        with:
          creds: ${{ secrets.AZURE_QA_KV_CREDENTIALS }}

      - name: Retrieve secrets
        id: retrieve-secrets
        uses: Azure/get-keyvault-secrets@80ccd3fafe5662407cc2e55f202ee34bfff8c403
        with:
          keyvault: "bitwarden-qa-kv"
          secrets: "qa-aks-kubectl-credentials"

      - name: Login with qa-aks-kubectl-credentials SP
        uses: Azure/login@77f1b2e3fb80c0e8645114159d17008b8a2e475a
        with:
          creds: ${{ env.qa-aks-kubectl-credentials }}

      - name: Setup AKS access
        #env:
        #  USER_ID: ${{ env.qa-kubectl-managed-identity-clientId }}
        run: |
          echo "---az install---"
          az aks install-cli --install-location ./kubectl --kubelogin-install-location ./kubelogin
          echo "---az get-creds---"
          az aks get-credentials -n $_QA_CLUSTER_NAME -g $_QA_CLUSTER_RESOURCE_GROUP

      - name: Get image tag
        id: image_tag
        run: |
          IMAGE_TAG=$(echo "${GITHUB_REF:11}" | sed "s#/#-#g")
          TAG_EXTENSION=${{ github.event.inputs.image_extension }}

          if [[ $TAG_EXTENSION ]]; then
            IMAGE_TAG=$IMAGE_TAG-$TAG_EXTENSION
          fi
          echo "::set-output name=value::$IMAGE_TAG"

      - name: Deploy Web image
        env:
          IMAGE_TAG: ${{ steps.image_tag.outputs.value }}
        run: |
          kubectl set image -n $_QA_K8S_NAMESPACE deployment/web web=bitwardenqa.azurecr.io/web:$IMAGE_TAG --record
          kubectl rollout restart -n $_QA_K8S_NAMESPACE deployment/web
          kubectl rollout status deployment/web -n $_QA_K8S_NAMESPACE
