Versions-Check-Scripts für Software außerhalb von apt (neuer Menüpunkt „Software“ + Dashboard) #14
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Manche Software lässt sich mit
apt updategar nicht auf neue Versionen prüfen, zum Beispiel Paperless-ngx, Nginx Proxy Manager oder andere Docker-, Git- oder Binär-Installationen. Ob es davon eine neue Version gibt, sieht man in PatchPilot nicht. Man muss selbst auf GitHub nachsehen und merkt deshalb oft nicht, dass man das passende Update-Script laufen lassen sollte.Ziel
Stand im Code
backend/database.py:Script(Inhalt,target_servers,create_snapshot),ScriptRun(Ausgabe, Status) undScriptSchedule(cron_expr,timezone,server_ids) gibt es schon.backend/routers/scripts.py→_run_script()führt Scripts per SSH auf dem Zielserver aus. Die Ausgabe landet als Text inScriptRun.output, strukturierte Rückgabewerte gibt es bisher nicht.backend/scheduler.py→_make_script_runner()/add_script_schedule()plant Scripts schon mit Cron und Zeitzone ein. Darauf lässt sich direkt aufbauen.Lösungsvorschlag
Script-Typ:
Scriptbekommt ein Feldkind = "action" | "version_check". Die bisherigen Scripts sindaction. So lassen sich Editor, SSH-Ausführung, Zeitpläne und Live-Log wiederverwenden.Ausgabeformat: Ein Versions-Check-Script gibt am Ende eine Zeile mit einem festen Präfix aus, die PatchPilot auswertet, zum Beispiel:
name: Anzeigename (optional, sonst der Script-Name)current: installierte Versionlatest: neueste Versionupdate_available(bool): damit kann das Script selbst entscheiden, falls ein einfacher Versionsvergleich nicht reicht, etwa bei Datums-Tags oderlatest-Images. Fehlt das Feld, giltcurrent != latestals „Update verfügbar“.Datenmodell: Eine neue Tabelle, zum Beispiel
SoftwareVersion, mitserver_id,script_id,name,current_version,latest_version,update_available,checked_at,status,error_messageund optionalupdate_script_id. Jeder Check aktualisiert pro Server und Programmname genau einen Eintrag, damit die Tabelle nicht mit jeder Prüfung wächst.Frontend:
Software.tsxmit Menüpunkt „Software“: eine Tabelle mit den Spalten oben, Filter „nur Updates“ und den Buttons „Jetzt prüfen“ und „Update-Script starten“ (wenn eines verknüpft ist).alt → neu.Scripts.tsx: beim Anlegen den Typ „Versions-Check“ auswählen, am besten mit einer Beispielvorlage wie oben.Benachrichtigung (optional): Ein Matrix-Ereignis „Neue Software-Version verfügbar“, das sich wie die anderen Ereignisse einzeln ein- und ausschalten lässt (vgl. #6). Es geht nur raus, wenn sich
latestgegenüber dem letzten Check geändert hat, damit dieselbe Meldung nicht bei jedem Lauf wiederkommt.Offene Punkte
Akzeptanzkriterien
PATCHPILOT_VERSION-Ausgabe wird ausgewertet (auch mehrere pro Lauf), Fehler sind im Status sichtbarupdate_availableüberschrieben)