name: Server Deploy

on:
    push:
        branches:
            - main

jobs:
    deploy:
        runs-on: ubuntu-docker
        container: docker:dind
        steps:
            - name: Setup Node
              run: apk add --update nodejs npm
            - name: Checkout
              uses: actions/checkout@v4

            - name: Log in to registry
              run: |
                  echo "${{ secrets.RELEASE_TOKEN }}" | \
                    docker login ${{ vars.DOCKER_HOST }} \
                      -u "${{ secrets.REGISTRY_USER }}" --password-stdin

            - name: Build and push server image
              run: |
                  IMAGE="${{ vars.DOCKER_HOST }}/${{ github.repository_owner }}/vantage/server:latest"
                  # Root context: server depends on the shared module.
                  docker build -t "$IMAGE" -f server/Dockerfile .
                  docker push "$IMAGE"

            - name: Build and push web image
              run: |
                  IMAGE="${{ vars.DOCKER_HOST }}/${{ github.repository_owner }}/vantage/web:latest"
                  docker build \
                    --build-arg NEXT_PUBLIC_API_URL="${{ vars.API_URL }}" \
                    -t "$IMAGE" \
                    -f web/Dockerfile web/
                  docker push "$IMAGE"

            - name: Build and push site image
              run: |
                  IMAGE="${{ vars.DOCKER_HOST }}/${{ github.repository_owner }}/vantage/site:latest"
                  docker build \
                    --build-arg NEXT_PUBLIC_SITE_API="${{ vars.SITE_API_URL }}" \
                    --build-arg NEXT_PUBLIC_CONTACT_EMAIL="support@hostxtra.co.uk" \
                    -t "$IMAGE" \
                    -f site/Dockerfile site/
                  docker push "$IMAGE"

            - name: Build and push sitesvc image
              run: |
                  IMAGE="${{ vars.DOCKER_HOST }}/${{ github.repository_owner }}/vantage/sitesvc:latest"
                  # Root context: sitesvc depends on the shared module.
                  docker build -t "$IMAGE" -f sitesvc/Dockerfile .
                  docker push "$IMAGE"

            - name: Build and push admin image
              run: |
                  IMAGE="${{ vars.DOCKER_HOST }}/${{ github.repository_owner }}/vantage/admin:latest"
                  # Root context: admin depends on the shared module.
                  docker build -t "$IMAGE" -f admin/Dockerfile .
                  docker push "$IMAGE"
