- Python 54.2%
- Vue 33.5%
- TypeScript 9.4%
- Shell 2.4%
- Nix 0.2%
- Other 0.2%
| .github | ||
| .vscode | ||
| backend | ||
| contrib | ||
| docs | ||
| frontend | ||
| lessons | ||
| scripts | ||
| .env.example | ||
| .gitignore | ||
| docker-compose.yml | ||
| README.md | ||
| shell.nix | ||
| TODO | ||
Gluon Release Manager
Webbasiertes Release-Management-Tool fuer Gluon-Firmwares.
Hinweis: Dieses Projekt ist fast vollstaendig vibecoded – der Code wurde ueberwiegend durch KI-gestuetzte Entwicklung mit GitHub Copilot erzeugt.
Features
- Release-Planung – Releases mit Vorgaengerbeziehungen, Branches und Status (planned, in development, released, closed) verwalten
- Versionierung – Pre-Release- und Final-Versionen mit Gluon- und Site-Commits anlegen
- Build-Integration – Firmware-Builds direkt aus dem UI ueber Forgejo Actions starten und Build-Status live verfolgen
- Gluon-Upstream-Sync – Automatischer Abgleich von Gluon-Upstream-Releases und -Branches per Worker
- Site-Branch-Cache – Lokaler Cache der Site-Repository-Branches fuer Commit-Auswahl im UI
- Publish-State-Tracking – Automatische Erkennung, ob eine Version auf dem Firmware-Server verfuegbar ist
- OIDC-Login – Authentifizierung ueber OpenID Connect; oeffentliche Daten sind ohne Login lesbar, Schreibzugriffe erfordern Anmeldung
- Dev-Modus – Lokale Entwicklung ohne OIDC mit einem konfigurierbaren Dev-User
- Release Notes – Pro Release und Version pflegbar, mit Vergleichsansichten
- Signatur-Tracking – Anzahl der Signaturen pro Version wird automatisch aus dem Firmware-Manifest gelesen
Struktur
backend/– FastAPI REST APIfrontend/– Vue.js / Vuetify UIscripts/– Worker-Skripte fuer Sync, Import und Build-Abgleichcontrib/– Beispieldaten (z.B.hannover_import.yaml)docs/– Planungs- und Architekturdokumentelessons/– Dauerhafte Lessons Learneddata/– Lokale SQLite-Daten (nicht im Git)
Quick Start
1. Repository klonen und .env anlegen
git clone <repo-url>
cd gluon-release-manager
cp .env.example .env # oder eigene .env anlegen
Die wichtigsten Variablen fuer den Start:
| Variable | Zweck |
|---|---|
OIDC_ENABLED |
false fuer lokale Entwicklung ohne Login |
PUBLIC_BASE_URL |
Oeffentliche URL (z.B. https://releases.example.org) |
FORGEJO_WORKFLOW_ENABLE |
true um Build-Integration zu aktivieren |
WORKER_GLUON_URL |
URL des Gluon-Upstream-Repos |
Alle Variablen sind in docs/environment.md dokumentiert.
2. Starten
docker compose up --build
Der Stack startet drei Services:
- Frontend –
http://localhost:4173 - Backend –
http://localhost:8000 - Worker – periodische Sync-Jobs (Gluon-Upstream, Site-Cache, Build-Status, Publish-State)
3. Beispieldaten importieren
Zum Import bestehender Releases (z.B. aus dem Freifunk Hannover Wiki):
nix-shell --run 'python scripts/import_releases.py --api-base-url http://127.0.0.1:8000 contrib/hannover_import.yaml'
Alternativ koennen Seed-Daten ueber die API geladen werden:
nix-shell --run 'python scripts/seed_api_data.py --api-base-url http://127.0.0.1:8000'
Wenn OIDC aktiv ist, legt Docker Compose automatisch einen gemeinsamen Worker-Schreibtoken unter data/worker-api-token an. Die Import-Skripte verwenden diese Datei automatisch.
Konfiguration
Alle Umgebungsvariablen sind in docs/environment.md beschrieben.
Tests
Alle Tests werden innerhalb der nix-shell ausgefuehrt (siehe shell.nix).
Backend-Tests (unittest + FastAPI TestClient):
./scripts/run-backend-tests.sh
Frontend-Tests (Playwright E2E):
nix-shell --run './scripts/run-frontend-tests.sh'
Details zu Testumgebung und Umgebungsvariablen: docs/testing.md