diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index 7d3e1cc..9ea7d75 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -103,7 +103,7 @@ jobs: # PROD_USER — SSH login user (typically root) # PROD_SSH_KEY — private key whose public half is in authorized_keys # PROD_SSH_KNOWN_HOSTS — output of: ssh-keyscan -H - deploy: + deploy-prod: name: Deploy to prod runs-on: ubuntu-latest needs: [docker] @@ -132,6 +132,43 @@ jobs: doppler run -- docker compose pull backend runner ui caddy pocketbase doppler run -- docker compose up -d --remove-orphans' + # ── deploy homelab runner ───────────────────────────────────────────────────── + # Syncs the homelab runner compose file and restarts the runner service. + # + # Required Gitea secrets: + # HOMELAB_HOST — homelab server IP (192.168.0.109) + # HOMELAB_USER — SSH login user (typically root) + # HOMELAB_SSH_KEY — private key whose public half is in authorized_keys + # HOMELAB_SSH_KNOWN_HOSTS — output of: ssh-keyscan -H + deploy-homelab: + name: Deploy to homelab + runs-on: ubuntu-latest + needs: [docker] + steps: + - uses: actions/checkout@v4 + + - name: Install SSH key + run: | + mkdir -p ~/.ssh + printf '%s\n' "${{ secrets.HOMELAB_SSH_KEY }}" > ~/.ssh/homelab_key + chmod 600 ~/.ssh/homelab_key + printf '%s\n' "${{ secrets.HOMELAB_SSH_KNOWN_HOSTS }}" >> ~/.ssh/known_hosts + + - name: Copy docker-compose.yml to homelab + run: | + scp -i ~/.ssh/homelab_key \ + homelab/runner/docker-compose.yml \ + "${{ secrets.HOMELAB_USER }}@${{ secrets.HOMELAB_HOST }}:/opt/libnovel-runner/docker-compose.yml" + + - name: Pull new runner image and restart + run: | + ssh -i ~/.ssh/homelab_key \ + "${{ secrets.HOMELAB_USER }}@${{ secrets.HOMELAB_HOST }}" \ + 'set -euo pipefail + cd /opt/libnovel-runner + doppler run --project libnovel --config prd_homelab -- docker compose pull runner + doppler run --project libnovel --config prd_homelab -- docker compose up -d runner' + # ── Gitea release ───────────────────────────────────────────────────────────── release: name: Gitea Release