diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index b9aaaa7..a85489e 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -124,28 +124,31 @@ jobs: runs-on: ubuntu-latest needs: build-and-push if: github.event_name != 'pull_request' + # Single-host deploy: the runner lives on the same box as the stack, so we + # drive the host docker daemon directly (act_runner shares its socket via + # `docker_host: "-"`) instead of SSHing out. The compose dir is bind-mounted + # at its REAL host path so compose's relative bind-mounts (./mangalord/..., + # ./Caddyfile) resolve; this requires `/mnt/ssd/docker-data` in the runner's + # container.valid_volumes. The central compose references the images as + # registry.mc02.dev/mangalord-*:${MANGALORD_TAG:-latest}, so we only pull + # and recreate the two mangalord services at the freshly built SHA. + container: + image: docker:cli + volumes: + - /mnt/ssd/docker-data:/mnt/ssd/docker-data steps: - - name: SSH deploy - uses: appleboy/ssh-action@v1.0.3 - with: - host: ${{ secrets.SSH_HOST }} - username: ${{ secrets.SSH_USER }} - key: ${{ secrets.SSH_PRIVATE_KEY }} - port: ${{ secrets.SSH_PORT || 22 }} - envs: REGISTRY_URL,REGISTRY_USERNAME,REGISTRY_PASSWORD,IMAGE_TAG,DEPLOY_PATH - script_stop: true - script: | - set -euo pipefail - cd "$DEPLOY_PATH" - echo "$REGISTRY_PASSWORD" | docker login "$REGISTRY_URL" -u "$REGISTRY_USERNAME" --password-stdin - export REGISTRY_URL IMAGE_TAG - docker compose -f docker-compose.yml -f docker-compose.prod.yml pull - docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d - docker image prune -f - docker logout "$REGISTRY_URL" + - name: Deploy to the local stack + working-directory: /mnt/ssd/docker-data env: REGISTRY_URL: ${{ secrets.REGISTRY_URL }} REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }} REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} IMAGE_TAG: ${{ needs.build-and-push.outputs.image_tag }} - DEPLOY_PATH: ${{ vars.DEPLOY_PATH }} + run: | + set -eu + echo "$REGISTRY_PASSWORD" | docker login "$REGISTRY_URL" -u "$REGISTRY_USERNAME" --password-stdin + export MANGALORD_TAG="$IMAGE_TAG" + docker compose pull mangalord-backend mangalord-frontend + docker compose up -d mangalord-backend mangalord-frontend + docker image prune -f + docker logout "$REGISTRY_URL"