Merge pull request 'Codeberg-Sync als Dauerlaeufer (Compose-Service) - leeres Board auf Produktion' (#11) from fds2610-bot/monitor:main into main
Reviewed-on: https://codeberg.org/fds2610/monitor/pulls/11
This commit is contained in:
commit
f785440872
6 changed files with 72 additions and 9 deletions
|
|
@ -14,5 +14,10 @@ MONITOR_API_BASE=http://localhost:8091/api/v1
|
||||||
# Codeberg-Repo, aus dem Backlog/Done per Sync-Skript befuellt werden
|
# Codeberg-Repo, aus dem Backlog/Done per Sync-Skript befuellt werden
|
||||||
CODEBERG_OWNER=fds2610
|
CODEBERG_OWNER=fds2610
|
||||||
CODEBERG_REPO=monitor
|
CODEBERG_REPO=monitor
|
||||||
# Optional: Token mit Lesezugriff, falls Rate-Limits ohne Token zu knapp sind
|
# Optional: Token mit Lesezugriff, falls Rate-Limits ohne Token zu knapp sind - bei kleinem
|
||||||
|
# MONITOR_SYNC_INTERVAL (haeufigem Sync) empfehlenswert
|
||||||
CODEBERG_TOKEN=
|
CODEBERG_TOKEN=
|
||||||
|
|
||||||
|
# Abstand zwischen zwei Codeberg-Sync-Laeufen in Sekunden (Service "sync" in
|
||||||
|
# docker-compose.yml). Der erste Lauf passiert direkt beim Start des Services.
|
||||||
|
MONITOR_SYNC_INTERVAL=600
|
||||||
|
|
|
||||||
23
API.md
23
API.md
|
|
@ -235,16 +235,31 @@ schliessen.
|
||||||
|
|
||||||
## Codeberg-Sync (Backlog/Done)
|
## Codeberg-Sync (Backlog/Done)
|
||||||
|
|
||||||
`api/bin/sync-codeberg.php` (per Cron oder manuell auszufuehren) liest offene und
|
`api/bin/sync-codeberg.php` liest offene und geschlossene Issues aus dem konfigurierten
|
||||||
geschlossene Issues aus dem konfigurierten Codeberg-Repo (`CODEBERG_OWNER`/`CODEBERG_REPO`)
|
Codeberg-Repo (`CODEBERG_OWNER`/`CODEBERG_REPO`) und gleicht sie ueber `external_ref`
|
||||||
und gleicht sie ueber `external_ref` (= Issue-Nummer) mit den Tickets ab:
|
(= Issue-Nummer) mit den Tickets ab:
|
||||||
|
|
||||||
- Offene Issues → Spalte `backlog` (nur falls das Ticket noch in `backlog`/`done` ist -
|
- Offene Issues → Spalte `backlog` (nur falls das Ticket noch in `backlog`/`done` ist -
|
||||||
manuell auf dem Board bewegte Tickets werden nicht zurueckgesetzt).
|
manuell auf dem Board bewegte Tickets werden nicht zurueckgesetzt).
|
||||||
- Geschlossene Issues → Spalte `done`.
|
- Geschlossene Issues → Spalte `done`.
|
||||||
- Ticket-Typ/-Farbe kommen vom ersten Issue-Label (Name/Farbe).
|
- Ticket-Typ/-Farbe kommen vom ersten Issue-Label (Name/Farbe).
|
||||||
|
|
||||||
Aufruf via Docker: `docker compose run --rm api php bin/sync-codeberg.php`.
|
Ausgefuehrt wird das Skript vom Compose-Service `sync` (siehe
|
||||||
|
[docker-compose.yml](docker-compose.yml)) - kein Host-Cron noetig. Der Service startet mit
|
||||||
|
dem Stack, macht sofort einen ersten Lauf und wiederholt ihn dann alle
|
||||||
|
`MONITOR_SYNC_INTERVAL` Sekunden (Default 600, siehe `.env.example`). Er nutzt dasselbe
|
||||||
|
Image und dieselbe SQLite-Datei wie `api` und verbindet sich ausschliesslich ausgehend nach
|
||||||
|
codeberg.org - es ist also kein Port-Mapping und keine Firewall-Freigabe noetig.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose up -d sync # Sync-Service starten
|
||||||
|
docker compose logs -f sync # Laeufe mitlesen
|
||||||
|
docker compose run --rm api php bin/sync-codeberg.php # einmalig manuell (Debug)
|
||||||
|
```
|
||||||
|
|
||||||
|
Beim manuellen Aufruf werden Fehler direkt auf der Konsole sichtbar (`Codeberg-API nicht
|
||||||
|
erreichbar: …` bzw. `Codeberg-API-Fehler (HTTP 4xx)`) - der erste Anlaufpunkt, wenn Backlog
|
||||||
|
und Done leer bleiben.
|
||||||
|
|
||||||
## Fehlerformat
|
## Fehlerformat
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,9 @@ die dazugehörigen Klärungen in [Detailfragen.md](Detailfragen.md) und
|
||||||
siehe Visualization.md Abschnitt 9). Ist die API nicht erreichbar, zeigt die Szene
|
siehe Visualization.md Abschnitt 9). Ist die API nicht erreichbar, zeigt die Szene
|
||||||
ersatzweise Demo-Daten — kenntlich gemacht durch einen roten Banner „API nicht erreichbar!".
|
ersatzweise Demo-Daten — kenntlich gemacht durch einen roten Banner „API nicht erreichbar!".
|
||||||
Die Basis-URL der API kommt aus `MONITOR_API_BASE` (siehe `.env.example`).
|
Die Basis-URL der API kommt aus `MONITOR_API_BASE` (siehe `.env.example`).
|
||||||
|
- Codeberg-Sync als Dauerläufer (Compose-Service `sync`): füllt Backlog und Done automatisch
|
||||||
|
alle `MONITOR_SYNC_INTERVAL` Sekunden aus den Issues des konfigurierten Codeberg-Repos
|
||||||
|
(siehe [API.md](API.md) Abschnitt „Codeberg-Sync")
|
||||||
- Weiterhin: klassische Ping-Überwachung (`check_fds.sh`, `hosts.conf`, `mail_fds.py`) als
|
- Weiterhin: klassische Ping-Überwachung (`check_fds.sh`, `hosts.conf`, `mail_fds.py`) als
|
||||||
eine Datenquelle für den System-Monitor; die alte tabellarische Statusseite ist mit
|
eine Datenquelle für den System-Monitor; die alte tabellarische Statusseite ist mit
|
||||||
Phase 7 entfallen (F16), `status.txt` speist weiterhin den System-Monitor
|
Phase 7 entfallen (F16), `status.txt` speist weiterhin den System-Monitor
|
||||||
|
|
@ -49,9 +52,10 @@ Docker-Compose-Containern; auf dem Host muss nichts installiert werden.
|
||||||
```bash
|
```bash
|
||||||
cp .env.example .env # einmalig, MONITOR_ADMIN_API_KEY anpassen
|
cp .env.example .env # einmalig, MONITOR_ADMIN_API_KEY anpassen
|
||||||
|
|
||||||
docker compose up --build # API auf :8091, Buero-Visualisierung auf :8090
|
docker compose up --build # API auf :8091, Buero-Visualisierung auf :8090, Sync
|
||||||
docker compose run --rm api composer test # PHPUnit (API)
|
docker compose run --rm api composer test # PHPUnit (API)
|
||||||
docker compose run --rm frontend # Node-Tests (Frontend-Layoutlogik)
|
docker compose run --rm frontend # Node-Tests (Frontend-Layoutlogik)
|
||||||
|
docker compose logs -f sync # Codeberg-Sync mitlesen
|
||||||
```
|
```
|
||||||
|
|
||||||
Der Browser erreicht die API nicht über das Compose-Netzwerk, sondern über die in
|
Der Browser erreicht die API nicht über das Compose-Netzwerk, sondern über die in
|
||||||
|
|
|
||||||
|
|
@ -14,9 +14,13 @@ cp .env.example .env # einmalig, MONITOR_ADMIN_API_KEY anpassen
|
||||||
|
|
||||||
docker compose up --build # startet die API auf http://localhost:8080
|
docker compose up --build # startet die API auf http://localhost:8080
|
||||||
docker compose run --rm api composer test # PHPUnit inkl. Coverage
|
docker compose run --rm api composer test # PHPUnit inkl. Coverage
|
||||||
docker compose run --rm api php bin/sync-codeberg.php # Backlog/Done aus Codeberg ziehen
|
docker compose run --rm api php bin/sync-codeberg.php # Backlog/Done einmalig ziehen (Debug)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Im laufenden Betrieb wird der Codeberg-Sync nicht manuell angestossen, sondern vom
|
||||||
|
Compose-Service `sync` alle `MONITOR_SYNC_INTERVAL` Sekunden ausgefuehrt (siehe
|
||||||
|
[../API.md](../API.md), Abschnitt "Codeberg-Sync").
|
||||||
|
|
||||||
Composer-Abhaengigkeiten (nur PHPUnit als Dev-Dependency) werden beim ersten Start
|
Composer-Abhaengigkeiten (nur PHPUnit als Dev-Dependency) werden beim ersten Start
|
||||||
automatisch **im Container** installiert (`docker/entrypoint.sh`) - auf dem Host ist
|
automatisch **im Container** installiert (`docker/entrypoint.sh`) - auf dem Host ist
|
||||||
weder PHP noch Composer noch SQLite erforderlich.
|
weder PHP noch Composer noch SQLite erforderlich.
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,41 @@ services:
|
||||||
CODEBERG_REPO: ${CODEBERG_REPO:-monitor}
|
CODEBERG_REPO: ${CODEBERG_REPO:-monitor}
|
||||||
CODEBERG_TOKEN: ${CODEBERG_TOKEN:-}
|
CODEBERG_TOKEN: ${CODEBERG_TOKEN:-}
|
||||||
|
|
||||||
|
# Haelt Backlog/Done aus Codeberg aktuell (F4, siehe API.md Abschnitt "Codeberg-Sync"):
|
||||||
|
# laeuft dasselbe Image wie api, teilt sich ueber das ./api-Volume dieselbe SQLite-Datei
|
||||||
|
# und ruft bin/sync-codeberg.php in einer Endlosschleife auf. Ohne diesen Service bleibt
|
||||||
|
# das Board leer, solange kein Agent selbst Tickets meldet.
|
||||||
|
# Rein ausgehende Verbindungen (nach codeberg.org), kein Port-Mapping - in Produktion sind
|
||||||
|
# also weder Proxy- noch Firewall-Freigaben noetig.
|
||||||
|
sync:
|
||||||
|
build:
|
||||||
|
context: ./api
|
||||||
|
dockerfile: docker/Dockerfile
|
||||||
|
volumes:
|
||||||
|
- ./api:/app
|
||||||
|
working_dir: /app
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
- api
|
||||||
|
environment:
|
||||||
|
MONITOR_DB_PATH: /app/data/monitor.sqlite
|
||||||
|
MONITOR_SYNC_INTERVAL: ${MONITOR_SYNC_INTERVAL:-600}
|
||||||
|
CODEBERG_API_BASE: https://codeberg.org/api/v1
|
||||||
|
CODEBERG_OWNER: ${CODEBERG_OWNER:-fds2610}
|
||||||
|
CODEBERG_REPO: ${CODEBERG_REPO:-monitor}
|
||||||
|
CODEBERG_TOKEN: ${CODEBERG_TOKEN:-}
|
||||||
|
# "$$" ist ein maskiertes "$" - die Variable soll die Shell im Container aufloesen, nicht
|
||||||
|
# Compose. Ein fehlgeschlagener Lauf (Codeberg nicht erreichbar, Rate-Limit) darf die
|
||||||
|
# Schleife nicht beenden, sonst landet der Service in einer Restart-Schleife.
|
||||||
|
command:
|
||||||
|
- sh
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
while true; do
|
||||||
|
php bin/sync-codeberg.php || echo "[sync] Lauf fehlgeschlagen, naechster Versuch in $${MONITOR_SYNC_INTERVAL}s"
|
||||||
|
sleep "$$MONITOR_SYNC_INTERVAL"
|
||||||
|
done
|
||||||
|
|
||||||
# Statisches Frontend (html/) - Phase 2 der Neuausrichtung (Buero-Visualisierung).
|
# Statisches Frontend (html/) - Phase 2 der Neuausrichtung (Buero-Visualisierung).
|
||||||
# Nur zur lokalen Ansicht/Entwicklung, kein Build-Schritt noetig (Vanilla HTML/CSS/JS).
|
# Nur zur lokalen Ansicht/Entwicklung, kein Build-Schritt noetig (Vanilla HTML/CSS/JS).
|
||||||
web:
|
web:
|
||||||
|
|
|
||||||
|
|
@ -58,8 +58,8 @@ $DOCKER_COMPOSE run --rm api composer install --no-interaction --no-progress
|
||||||
log "Baue Docker-Images neu (falls Dockerfile/Abhaengigkeiten sich geaendert haben)..."
|
log "Baue Docker-Images neu (falls Dockerfile/Abhaengigkeiten sich geaendert haben)..."
|
||||||
$DOCKER_COMPOSE build
|
$DOCKER_COMPOSE build
|
||||||
|
|
||||||
log "Starte Dienste neu (api, web)..."
|
log "Starte Dienste neu (api, web, sync)..."
|
||||||
$DOCKER_COMPOSE up -d api web
|
$DOCKER_COMPOSE up -d api web sync
|
||||||
|
|
||||||
if [ "$UPDATE_RUN_TESTS" = "1" ]; then
|
if [ "$UPDATE_RUN_TESTS" = "1" ]; then
|
||||||
log "Fuehre PHPUnit-Tests (API) aus..."
|
log "Fuehre PHPUnit-Tests (API) aus..."
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue