name: Deploy Trainer_LLM to llm-node on: push: branches: [ "main" ] paths: - "knowledge/**" - "llm-api/**" - "scripts/**" concurrency: group: deploy-trainer-llm cancel-in-progress: false jobs: deploy: runs-on: linux_host # muss zum Runner-Label passen steps: - name: Checkout # Absolute URL reduziert Abhängigkeit von DEFAULT_ACTIONS_URL uses: https://github.com/actions/checkout@v4 - name: Sanity — Runner & Commit run: | echo "Runner: $RUNNER_NAME Labels: $RUNNER_LABELS" echo "Commit: $GITEA_SHA Ref: $GITEA_REF" uname -a - name: Debug whoami & write test run: | whoami id getent passwd $(whoami) || true # Testet Schreibrecht unter /home/llmadmin touch /home/llmadmin/.write_test && rm /home/llmadmin/.write_test || echo "no write" - name: Ensure target directories exist run: | mkdir -p /home/llmadmin/knowledge mkdir -p /home/llmadmin/llm-api mkdir -p /home/llmadmin/scripts - name: Rsync knowledge/ if: ${{ hashFiles('knowledge/**') != '' }} run: | rsync -a --delete \ --exclude='.git' \ --exclude='.env' --exclude='.env.*' --exclude='**/.env' --exclude='**/.env.*' \ knowledge/ /home/llmadmin/knowledge/ echo "Synced knowledge/" - name: Rsync llm-api/ if: ${{ hashFiles('llm-api/**') != '' }} run: | rsync -a --delete \ --exclude='.git' \ --exclude='.env' --exclude='.env.*' --exclude='**/.env' --exclude='**/.env.*' \ llm-api/ /home/llmadmin/llm-api/ echo "Synced llm-api/" - name: Rsync scripts/ if: ${{ hashFiles('scripts/**') != '' }} run: | rsync -a --delete \ --exclude='.git' \ --exclude='.env' --exclude='.env.*' --exclude='**/.env' --exclude='**/.env.*' \ scripts/ /home/llmadmin/scripts/ echo "Synced scripts/" - name: Optional — systemctl --user restart llm-api (ignore if missing) continue-on-error: true env: XDG_RUNTIME_DIR: /run/user/${{ inputs.uid || 1000 }} run: | # Versuche nur zu restarten, wenn der Service existiert if systemctl --user list-unit-files | grep -q '^llm-api.service'; then systemctl --user restart llm-api.service systemctl --user --no-pager status llm-api.service --full -l || true else echo "llm-api.service nicht gefunden — Schritt wird übersprungen." fi - name: Post-check — show latest changes run: | echo "Deploy complete. Listing targets:" ls -la /home/llmadmin/knowledge | tail -n +1 || true ls -la /home/llmadmin/llm-api | tail -n +1 || true ls -la /home/llmadmin/scripts | tail -n +1 || true