mindnet/.gitea/workflows/deploy.yml
Workflow config file is invalid. Please check your config file: yaml: line 87: could not find expected ':'

96 lines
3.5 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# .gitea/workflows/deploy.yml
name: Deploy mindnet to llm-node
on:
push:
branches: [ "main" ]
concurrency:
group: deploy-mindnet
cancel-in-progress: false
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!)
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
- 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"
- 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
'
- 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"
- 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
"
- 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
'