4.8 KiB
Mindnet v2.2 – Entwickler-Workflow
Datei: DEV_WORKFLOW.md
Stand: 2025-12-07 (Aktualisiert: Sync-First Strategie)
Dieses Handbuch beschreibt den Entwicklungszyklus zwischen Windows PC (IDE), Raspberry Pi (Gitea) und Beelink (Runtime/Server).
1. Die Architektur
- Windows 11 (VS Code): Hier schreibst du Code. Nie direkt auf
mainarbeiten! - Raspberry Pi (Gitea): Der Tresor. Speichert den Code und verwaltet Versionen.
- Beelink (Runtime): Hier läuft die Software. Wir trennen strikt:
- PROD (
~/mindnet): Läuft stabil aufmain. Port 8001. - DEV (
~/mindnet_dev): Deine Spielwiese für Branches. Port 8002.
- PROD (
2. Der Zyklus: Von der Idee zum Release
Phase 1: Entwicklung (Windows / VS Code)
Hier erstellst du die neue Funktion in einer sicheren Umgebung.
-
Basis aktualisieren (WICHTIG!): Bevor du startest, muss dein lokales
mainauf dem Stand des Servers sein.- Klicke unten links auf den aktuellen Branch und wähle
main. - Klicke links im Menü "Source Control" auf die drei Punkte (...) -> Pull (oder das Synchronisieren-Symbol).
- Erst jetzt hast du alle Dateien!
- Klicke unten links auf den aktuellen Branch und wähle
-
Branch erstellen:
- Klicke wieder unten links auf
main. - Wähle
+ Create new branch.... - Gib den Namen ein:
feature/was-ich-tue(z.B.feature/wp04b-explanation). - Drücke Enter.
- Klicke wieder unten links auf
-
Sicherheits-Check:
- Steht unten links jetzt dein Feature-Branch? Nur dann darfst du Code ändern!
-
Coden:
- Nimm deine Änderungen vor.
-
Sichern & Hochladen:
- Source Control Icon (Gabel-Symbol) -> Nachricht eingeben -> Commit.
- Publish Branch (oder "Sync Changes"), um den Branch zum Raspberry Pi (Gitea) zu senden.
Phase 2: Testen (Beelink / mindnet_dev)
Hier prüfst du, ob dein neuer Code auf dem echten Server läuft.
-
Einloggen:
ssh user@<BEELINK-IP> -
In die Werkstatt gehen:
cd /home/llmadmin/mindnet_dev -
Code holen:
git fetch # Tipp: 'git branch -r' zeigt alle verfügbaren Branches an git checkout feature/wp04b-explanation git pull -
Umgebung vorbereiten:
source .venv/bin/activate pip install -r requirements.txt # Nur nötig bei neuen Paketen -
Test-Server neustarten (WICHTIG): Falls noch ein alter Prozess läuft, musst du ihn beenden.
- Drücke
Strg + Cfalls der Server noch im Vordergrund läuft. - Oder nutze
pkill -f "uvicorn app.main:app".
Starten auf Port 8002:
uvicorn app.main:app --host 0.0.0.0 --port 8002 --env-file .env - Drücke
-
Validieren: Führe deine Tests in einem zweiten Terminal aus:
# Beispiel für Smoke-Test gegen Dev-Port python3 tests/test_explanation_smoke.py --url http://localhost:8002/query
Phase 3: Release (Gitea / Raspberry Pi)
Wenn der Test auf Port 8002 erfolgreich war:
- Öffne Gitea im Browser.
- Erstelle einen Pull Request (Dein Branch ->
main). - Merge den Pull Request.
Phase 4: Deployment (Beelink / mindnet)
Jetzt bringen wir die Änderung in das Live-System (Port 8001).
-
Deploy-Agent (Automatisch): Wenn dein
deploy.ymlaktiv ist, passiert das jetzt von selbst! -
Manuell (Falls nötig):
cd /home/llmadmin/mindnet git pull origin main sudo systemctl restart mindnet-api
Phase 5: Aufräumen (Optional aber empfohlen)
Damit das Chaos nicht wächst, löschen wir den fertigen Branch.
- Gitea: Im Pull Request auf "Delete Branch" klicken.
- Beelink (Dev):
cd ~/mindnet_dev git checkout main git pull git branch -d feature/wp04b-explanation - VS Code:
- Auf
mainwechseln. - Sync drücken (um Löschung vom Server zu erfahren).
F1->Git: Delete Branch-> Branch auswählen.
- Auf
3. Cheat Sheet: Die wichtigsten Befehle
| Wo? | Befehl | Was tut es? |
|---|---|---|
| VS Code | Sync (auf main) |
WICHTIG: Holt neuesten Code vom Server. |
| VS Code | Klick auf Branch |
Branch erstellen oder wechseln. |
| Beelink | source .venv/bin/activate |
Aktiviert Python-Umgebung. |
| Beelink | git fetch |
Aktualisiert Remote-Branches. |
| Beelink | git checkout <name> |
Wechsle Branch. |
| Beelink | git pull |
Aktualisiere aktuellen Branch. |
| Beelink | uvicorn ... --port 8002 |
Startet Test-Server (Dev). |
4. Troubleshooting
"Hilfe, in meinem neuen Branch fehlen Dateien!" Das passiert, wenn du beim Erstellen nicht aktuell warst.
- Lösung:
# In VS Code Terminal: git checkout feature/mein-kaputter-branch git merge main # (Das holt die fehlenden Dateien aus main nach)