mirror of
https://github.com/MaksTinyWorkshop/_Assistant_Lead_Tech
synced 2026-06-28 01:53:40 +02:00
feat(nuc): script de sync auto Lead_tech sur le NUC (pull + rebuild index)
scripts/nuc-sync-leadtech.sh (à exécuter SUR le NUC, via cron) : - git pull --ff-only du clone /srv/helpers/_Assistant_Lead_Tech - rebuild de l'index MCP dans le conteneur (docker exec leadtech-bmad-build-index) SANS restart → get_guidance sert la doctrine fraîche au prochain appel Élimine le "yoyo git pull" : push depuis le Mac → le NUC suit tout seul, et la connaissance capitalisée devient disponible côté MCP sans redémarrage. Ne pull que s'il y a du nouveau (pas de rebuild inutile) ; ff-only strict pour ne jamais créer de divergence silencieuse. Installation cron documentée dans l'en-tête du script.
This commit is contained in:
Executable
+54
@@ -0,0 +1,54 @@
|
||||
#!/usr/bin/env bash
|
||||
# nuc-sync-leadtech.sh
|
||||
# À exécuter SUR LE NUC (docker-dev), via cron ou à la demande.
|
||||
#
|
||||
# Rôle : maintenir le clone Lead_tech du NUC à jour ET rafraîchir l'index du MCP
|
||||
# sans redémarrer le conteneur.
|
||||
#
|
||||
# 1. git pull --ff-only → récupère la doctrine poussée depuis le Mac (ou ailleurs)
|
||||
# 2. rebuild de l'index → le serveur MCP sert la connaissance fraîche au prochain
|
||||
# get_guidance (l'index est lu à chaque appel)
|
||||
#
|
||||
# Tue le "yoyo git pull" : tu push depuis le Mac, le NUC suit tout seul.
|
||||
#
|
||||
# Installation cron (sur le NUC) :
|
||||
# crontab -e
|
||||
# */3 * * * * /srv/helpers/_Assistant_Lead_Tech/scripts/nuc-sync-leadtech.sh >> /srv/helpers/_Assistant_Lead_Tech/.nuc-sync.log 2>&1
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
REPO="/srv/helpers/_Assistant_Lead_Tech"
|
||||
CONTAINER="leadtech-bmad-mcp"
|
||||
TS() { date '+%Y-%m-%d %H:%M:%S'; }
|
||||
|
||||
cd "$REPO" || { echo "[$(TS)] ✗ repo introuvable : $REPO"; exit 1; }
|
||||
|
||||
# ─── 1. Pull (fast-forward only — jamais de merge auto qui pourrait diverger) ──
|
||||
# On ne pull QUE s'il y a du nouveau, pour ne pas spammer le log ni rebuild pour rien.
|
||||
git fetch origin --quiet
|
||||
LOCAL="$(git rev-parse @)"
|
||||
REMOTE="$(git rev-parse '@{u}')"
|
||||
|
||||
if [ "$LOCAL" = "$REMOTE" ]; then
|
||||
# Déjà à jour : rien à faire (sortie silencieuse pour ne pas polluer le log cron)
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "[$(TS)] ↓ nouveau commit distant détecté, pull…"
|
||||
if ! git merge --ff-only origin/"$(git rev-parse --abbrev-ref HEAD)" --quiet; then
|
||||
echo "[$(TS)] ✗ ff-only impossible (divergence locale sur le NUC ?). Intervention manuelle requise."
|
||||
echo "[$(TS)] → un commit local non poussé existe peut-être sur le NUC. Vérifier 'git status'."
|
||||
exit 1
|
||||
fi
|
||||
echo "[$(TS)] ✓ pull OK → $(git rev-parse --short HEAD)"
|
||||
|
||||
# ─── 2. Rebuild de l'index dans le conteneur (sans restart) ───────────────────
|
||||
if docker ps --filter "name=$CONTAINER" --format '{{.Names}}' | grep -q "^$CONTAINER$"; then
|
||||
if docker exec "$CONTAINER" leadtech-bmad-build-index >/dev/null 2>&1; then
|
||||
echo "[$(TS)] ✓ index MCP reconstruit (conteneur $CONTAINER, sans restart)"
|
||||
else
|
||||
echo "[$(TS)] ⚠ rebuild index échoué dans $CONTAINER — le MCP sert l'ancien index jusqu'au prochain restart."
|
||||
fi
|
||||
else
|
||||
echo "[$(TS)] ⚠ conteneur $CONTAINER non actif — pull fait, index non reconstruit."
|
||||
fi
|
||||
Reference in New Issue
Block a user