
name: Build and Deploy NextJS SculptedArc Website
on: [push]

jobs:

  build-and-deploy:

    runs-on: ubuntu-latest

    defaults:
      run:
        shell: sh

    steps:
      - name: Check out repository code
        uses: actions/checkout@v4

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

      # 1. Log into your self-hosted gitea container storage layer
      - name: Log in to gitea Container Registry
        uses: docker/login-action@v4
        with:
          registry: gitea.sculpted-arc.co.uk # Change to your gitea domain
          username: ${{ gitea.actor }}
          password: ${{ secrets.TOKEN_GITEA }} # Store a personal access token in your repo secrets for security

      # 2. Build the Dockerfile and upload the compiled app image
      - name: Build and Push Docker Image
        uses: docker/build-push-action@v5
        with:
          context: .
          push: true
          tags: gitea.sculpted-arc.co.uk/james-admin/sculptedarcwebsite:latest

      # 3. Securely SSH to the host using masked secrets
      - name: Deploy to Server via SSH
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.SERVER_HOST }}
          port: ${{ secrets.SSH_PORT }}
          username: james
          key: ${{ secrets.SSH_PRIVATE_KEY }} # Completely invisible to anyone viewing code
          passphrase: ${{ secrets.SSH_PASSPHRASE }}
          script: |
            cd /home/james/docker/sculpted-arc-site
            
            # Authenticate the host machine to pull from gitea's registry
            docker login -u ${{ gitea.actor }} -p ${{ secrets.TOKEN_GITEA }} gitea.sculpted-arc.co.uk
            
            # Pull down the fresh image we just built and restart gracefully
            docker compose pull
            docker compose up -d --remove-orphans