name: Build and Deploy NextJS SculptedArc Website on: push: branches: - main 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: actions/setup-buildx-action@v3 # 1. Log into your self-hosted Gitea container storage layer - name: Log in to Gitea Container Registry uses: actions/login-action@v3 with: registry: gitea.sculpted-arc.co.uk # Change to your Gitea domain username: ${{ gitea.actor }} password: ${{ secrets.TOKEN_GITEA }} # 2. Build the Dockerfile and upload the compiled app image - name: Build and Push Docker Image uses: actions/build-push-action@v5 with: context: . push: true tags: gitea.sculpted-arc.co.uk/${{ gitea.repository }}: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 }} username: root key: ${{ secrets.SSH_PRIVATE_KEY }} # Completely invisible to anyone viewing code 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