Ampel / ampel (push) Failing after 21s
Die Box hat als Web-Anbieter nur DuckDuckGo, der kann nicht lesen. Hermes bot web_extract trotzdem an, jeder Aufruf scheiterte, und der Waechter meldete den Nachrichten-Job jeden Morgen gelb. Das Plugin nutzt Hermes' offizielle Anbieter-Schnittstelle (kein Eingriff in den Hermes-Code) und liest wie MC2s fetch_url mit httpx und trafilatura, ohne fremden Dienst. deploy.sh kopiert Hermes-Plugins aus dem Repo; aktiviert wird einmalig von Hand. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
89 lines
4.4 KiB
Bash
89 lines
4.4 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
# ‼️ Das ganze Skript liegt in EINER Funktion — das ist Absicht, kein Stil.
|
|
# Bash liest ein Skript haeppchenweise WAEHREND es laeuft. `git pull` unten ersetzt
|
|
# genau diese Datei mitten im Lauf; danach liest bash am selben Byte-Offset im NEUEN
|
|
# Text weiter und fuehrt zerschnittene Zeilen aus. Live erlebt am 27.08.2026: der Pull
|
|
# brachte eine neue Fassung dieses Schrittes mit, ausgefuehrt wurde trotzdem die alte.
|
|
# Eine Funktion wird komplett geparst, bevor sie startet -> der Lauf bleibt in sich
|
|
# stimmig, und Aenderungen greifen ab dem naechsten Aufruf statt mittendrin.
|
|
main() {
|
|
|
|
echo "Starte MC2 Deployment..."
|
|
|
|
# 1. Neuesten Code holen
|
|
git pull origin main
|
|
|
|
|
|
# 2. Abhängigkeiten prüfen (falls sich was geändert hat)
|
|
echo "Aktualisiere Python Abhängigkeiten..."
|
|
backend/.venv/bin/pip install -r backend/requirements.txt
|
|
|
|
# 3. Llama-Swap Konfiguration prüfen und synchronisieren
|
|
#
|
|
# ‼️ ACHTUNG (27.08.2026): /etc/llama-swap/config.yaml ist die LEBENDE Wahrheit — MC2
|
|
# schreibt sie selbst (backend/services/llamaswap.py::write_config), sobald jemand über
|
|
# die Oberfläche ein Modell hinzufügt oder eine Rolle ändert. deploy/llama-swap.config.yaml
|
|
# ist nur ein Abzug und hinkt regelmäßig hinterher (erlebt: der Coder-Vollkontext aus 34a9862
|
|
# stand tagelang nur live, nicht im Abzug — ein Deploy hätte ihn zurückgesetzt).
|
|
# Bis hierher wurde die Live-Datei kommentarlos mit dem Abzug überschrieben — alles per
|
|
# UI Hinzugefügte war nach jedem Deploy weg. Jetzt: erst sichern, dann kopieren, und die
|
|
# Abweichung sichtbar machen. MC_DEPLOY_SKIP_SWAP_CONFIG=1 überspringt den Schritt ganz.
|
|
if ! cmp -s deploy/llama-swap.config.yaml /etc/llama-swap/config.yaml; then
|
|
if [ "${MC_DEPLOY_SKIP_SWAP_CONFIG:-0}" = "1" ]; then
|
|
echo "Llama-Swap Konfiguration weicht ab — uebersprungen (MC_DEPLOY_SKIP_SWAP_CONFIG=1)."
|
|
else
|
|
SWAP_BAK="/etc/llama-swap/config.yaml.bak-$(date +%Y%m%d-%H%M%S)"
|
|
echo "Llama-Swap Konfiguration hat sich geändert."
|
|
echo " Abweichung (live -> Repo-Abzug):"
|
|
diff -u /etc/llama-swap/config.yaml deploy/llama-swap.config.yaml | head -40 || true
|
|
echo " Sichere die laufende Datei nach $SWAP_BAK"
|
|
# NOPASSWD für llama-swap Neustart ist vorausgesetzt (siehe AGENTS.md)
|
|
sudo cp /etc/llama-swap/config.yaml "$SWAP_BAK"
|
|
sudo cp deploy/llama-swap.config.yaml /etc/llama-swap/config.yaml
|
|
sudo systemctl restart llama-swap
|
|
echo " Rueckweg bei Verlust: sudo cp $SWAP_BAK /etc/llama-swap/config.yaml"
|
|
fi
|
|
fi
|
|
|
|
# 4. Systemd Units neu laden (falls sich .service Dateien geändert haben)
|
|
# Das Modell-Radar (09/2026) ist die erste Unit, die deploy.sh selbst einspielt: Sie gehört ganz dem
|
|
# Repo, auf der Box wird an ihr nichts von Hand gedreht. Die übrigen Units bleiben wie bisher Handarbeit.
|
|
install -m 644 deploy/mc2-radar.service deploy/mc2-radar.timer "$HOME/.config/systemd/user/"
|
|
systemctl --user daemon-reload
|
|
systemctl --user enable --now mc2-radar.timer
|
|
|
|
# 4.5 Hermes Skills synchronisieren
|
|
echo "Synchronisiere Hermes Skills..."
|
|
mkdir -p ~/.hermes/skills
|
|
# Kopiere alle Skills aus dem Repo, ersetze - durch _ in den Ordnernamen für Hermes Kompatibilität
|
|
for skill_dir in deploy/skills/*; do
|
|
if [ -d "$skill_dir" ]; then
|
|
skill_name=$(basename "$skill_dir" | tr '-' '_')
|
|
mkdir -p ~/.hermes/skills/"$skill_name"
|
|
cp -r "$skill_dir"/* ~/.hermes/skills/"$skill_name"/
|
|
fi
|
|
done
|
|
|
|
# 4.6 Hermes-Plugins aus dem Repo (09/2026: mc2-web-lesen, Seiten lokal lesen für web_extract).
|
|
# Nur kopieren: Aktiviert wird ein Plugin einmalig von Hand (hermes plugins enable …), und neuer
|
|
# Plugin-Code greift erst beim nächsten Neustart des Hermes-Gateways — den macht deploy.sh bewusst nicht.
|
|
mkdir -p ~/.hermes/plugins
|
|
for plugin_dir in deploy/hermes-plugins/*; do
|
|
[ -d "$plugin_dir" ] && cp -r "$plugin_dir" ~/.hermes/plugins/
|
|
done
|
|
|
|
# 5. Dienste neu starten
|
|
# ‼️ mc2-steward gehoert hier dazu: er laeuft aus DEMSELBEN Checkout (backend/steward.py).
|
|
# Ohne ihn lief der Waechter-Prozess nach jedem Deploy mit dem alten Code weiter — der
|
|
# Neustart wurde 27.08.2026 nachgetragen. `--user restart` auf einer nicht installierten
|
|
# Unit ist folgenlos, darum ohne Vorabpruefung.
|
|
echo "Starte Backend neu..."
|
|
systemctl --user restart mc2-gateway.service mission-control-2.service mc2-steward.service
|
|
|
|
echo "✅ Deployment erfolgreich abgeschlossen!"
|
|
}
|
|
|
|
main "$@"
|