From 2d74fe4057a3371a0848c27692e60fabf47afcbf Mon Sep 17 00:00:00 2001 From: Lars Date: Mon, 29 Sep 2025 15:41:20 +0200 Subject: [PATCH] .gitea/workflows/deploy.yml aktualisiert --- .gitea/workflows/deploy.yml | 96 ++++++++++++++----------------------- 1 file changed, 35 insertions(+), 61 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 5585391..b1dd1ee 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -1,8 +1,9 @@ # .gitea/workflows/deploy.yml name: Deploy mindnet to llm-node + on: push: - branches: [ "main" ] + branches: ["main"] concurrency: group: deploy-mindnet @@ -12,84 +13,57 @@ jobs: deploy: runs-on: linux_host env: - DEPLOY_USER: "llmadmin" - DEPLOY_HOST: "${{ secrets.DEPLOY_HOST }}" - TARGET_BASE: "/home/llmadmin/mindnet" - # Whitelist der zu synchronisierenden Einträge (keine Caches!) + TARGET_BASE: /home/llmadmin/mindnet DEPLOY_DIRS: "app scripts schemas docker tests requirements.txt README.md" - # Optional: HF Cache global außerhalb TARGET_BASE (empfohlen) - HF_HOME: "/home/llmadmin/.cache/huggingface" steps: - name: Checkout - uses: https://github.com/actions/checkout@v4 + uses: actions/checkout@v4 - name: Ensure target base exists - run: | - ssh -o StrictHostKeyChecking=no "$DEPLOY_USER@$DEPLOY_HOST" "mkdir -p '$TARGET_BASE' '$HF_HOME' && chown -R $DEPLOY_USER:$DEPLOY_USER '$TARGET_BASE' '$HF_HOME' || true" + run: install -d "$TARGET_BASE" - name: Stop API (graceful) continue-on-error: true run: | - ssh -o StrictHostKeyChecking=no "$DEPLOY_USER@$DEPLOY_HOST" ' - if systemctl --user list-unit-files | grep -q "^mindnet-api.service"; then - systemctl --user stop mindnet-api.service || true - fi - ' + if systemctl --user list-unit-files | grep -q '^mindnet-api.service'; then + systemctl --user stop mindnet-api.service || true + fi - name: Deploy whitelisted (rsync) run: | set -euo pipefail - SRC="$GITHUB_WORKSPACE" - DEST="$DEPLOY_USER@$DEPLOY_HOST:$TARGET_BASE/" - - # Liste der Quellen vorbereiten (mit führendem ./ für --relative) - mapfile -t items < <(echo "$DEPLOY_DIRS" | tr " " "\n" | sed "s|^|./|") - cd "$SRC" - - rsync -avz --delete --relative \ - --omit-dir-times --no-perms --no-owner --no-group \ - --exclude ".git" \ - --exclude ".github" \ - --exclude ".gitea" \ - --exclude ".venv" \ - --exclude "__pycache__" \ - --exclude ".mypy_cache" \ - --exclude ".pytest_cache" \ - --exclude "hf_cache" \ - --exclude "hf_cache/**" \ - "${items[@]}" "$DEST" - - - name: Fix ownership - continue-on-error: true - run: | - ssh -o StrictHostKeyChecking=no "$DEPLOY_USER@$DEPLOY_HOST" "sudo chown -R $DEPLOY_USER:$DEPLOY_USER '$TARGET_BASE' || true" + IFS=' ' read -r -a DIRS <<< "$DEPLOY_DIRS" + for d in "${DIRS[@]}"; do + if [ -e "$d" ]; then + if [ -d "$d" ]; then + install -d "$TARGET_BASE/$d" + rsync -a --delete \ + --exclude='.git' \ + --exclude='.env*' \ + --exclude='.venv' \ + --exclude='hf_cache' --exclude='hf_cache/**' \ + "$d"/ "$TARGET_BASE/$d"/ + else + rsync -a "$d" "$TARGET_BASE/$d" + fi + fi + done - name: Python venv & requirements run: | - ssh -o StrictHostKeyChecking=no "$DEPLOY_USER@$DEPLOY_HOST" " - set -e - cd '$TARGET_BASE' - [ -d .venv ] || python3 -m venv .venv - source .venv/bin/activate - python -m pip install --upgrade pip - [ -f requirements.txt ] && pip install -r requirements.txt || true - " + cd "$TARGET_BASE" + [ -d .venv ] || python3 -m venv .venv + source .venv/bin/activate + pip install --upgrade pip + [ -f requirements.txt ] && pip install -r requirements.txt || true - name: Start/Restart mindnet-api continue-on-error: true run: | - ssh -o StrictHostKeyChecking=no "$DEPLOY_USER@$DEPLOY_HOST" ' - if systemctl --user list-unit-files | grep -q "^mindnet-api.service"; then - # HF_HOME außerhalb des Deploy-Baums setzen (robust gegen rsync --delete) - if ! systemctl --user cat mindnet-api.service | grep -q "Environment=HF_HOME="; then - echo "⚠️ Hinweis: Bitte Environment=HF_HOME in der Service-Unit setzen, z.B.: -[Service] -Environment=HF_HOME=/home/llmadmin/.cache/huggingface" - fi - systemctl --user restart mindnet-api.service - systemctl --user --no-pager status mindnet-api.service --full -l || true - else - echo "mindnet-api.service nicht vorhanden – übersprungen." - fi - ' + if systemctl --user list-unit-files | grep -q '^mindnet-api.service'; then + systemctl --user restart mindnet-api.service + systemctl --user --no-pager status mindnet-api.service --full -l || true + else + echo "mindnet-api.service nicht vorhanden – übersprungen." + fi