name: Build and Deploy

on:
    push:
        tags:
            - "v*"

jobs:
    build-and-deploy:
        runs-on: ubuntu-latest

        steps:
            - name: Checkout Code
              uses: actions/checkout@v3

            - name: Extract Tag Name
              id: extract_tag
              run: |
                  TAG_NAME=${GITHUB_REF#refs/tags/}
                  echo "tag=$TAG_NAME" >> $GITHUB_OUTPUT

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

            - name: Login to Docker Hub
              uses: docker/login-action@v3
              with:
                  username: ${{ secrets.DOCKERHUB_USERNAME }}
                  password: ${{ secrets.DOCKERHUB_PASSWORD }}
              env:
                  NEXT_PUBLIC_FASTAPI_URL: ${{ secrets.NEXT_PUBLIC_FASTAPI_URL }}   

            - name: Build and Push Docker Image
              uses: docker/build-push-action@v5
              with:
                  context: .
                  file: ./Dockerfile
                  push: true
                  tags: |
                      rooftopenergy/powermeter-frontend:${{ steps.extract_tag.outputs.tag }}

            - name: SSH and Deploy
              uses: appleboy/ssh-action@master
              with:
                  host: ${{ secrets.SSH_HOST }}
                  username: ${{ secrets.SSH_USER }}
                  key: ${{ secrets.SSH_PRIVATE_KEY }}
                  script: |
                      echo "Using tag: ${{ steps.extract_tag.outputs.tag }}"

                      cd /root/power-meter-dashboard

                      sed -i "s|rooftopenergy/powermeter-frontend:.*|rooftopenergy/powermeter-frontend:${{ steps.extract_tag.outputs.tag }}|g" docker-compose.yml

                      docker compose down
                      docker compose pull
                      docker compose up -d
                      
