From ce34d2c75fb206b117e6d3904f218bd7e1324dde Mon Sep 17 00:00:00 2001 From: Admin Date: Thu, 16 Apr 2026 19:07:59 +0500 Subject: [PATCH] feat: add homelab runner deployment step to release workflow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add deploy-homelab job to sync homelab/runner/docker-compose.yml - Rename deploy → deploy-prod for clarity - Both deployments run in parallel after Docker images are pushed - Homelab runner pulls only the runner image and restarts Required secrets (to be added in Gitea): - HOMELAB_HOST (192.168.0.109) - HOMELAB_USER (root) - HOMELAB_SSH_KEY (same as PROD_SSH_KEY or separate) - HOMELAB_SSH_KNOWN_HOSTS (ssh-keyscan -H 192.168.0.109) --- .gitea/workflows/release.yaml | 39 ++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) 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