Files
moneyfy/.gitea/workflows/README.md
T
moneyfyandClaude Opus 5 87bee9b72a build: Docker-Images, Compose-Setup und Gitea-Workflows
- Mehrstufige Dockerfiles je Dienst mit Stufen für Entwicklung und Betrieb,
  beide Images laufen als unprivilegierter Benutzer
- Backend-Entrypoint wartet auf die Datenbank, migriert und seedt nur bei
  leerem Kategoriebaum (neues Flag --if-empty)
- docker-compose.yml mit Netz-Trennung, Healthchecks und benannten Volumes;
  die Datenbank ist ausschließlich im internen Netz erreichbar
- nginx liefert das Bundle aus und reicht /api weiter; index.html ungecacht,
  gehashte Assets ein Jahr
- Gitea-Workflows: ci.yml für Lint, Tests und Bundle-Bau, build.yml für die
  Images nach linux/amd64 ohne Deploy-Schritt
- docs/runner.md und docs/deployment.md, .dockerignore je Dienst

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014e7t8UpmoVNMtWivY5LiSH
2026-09-09 17:14:44 +02:00

1.4 KiB
Raw Blame History

Gitea Actions

Zwei Workflows:

Datei Auslöser Was passiert
ci.yml jeder Push, jeder Pull Request Backend: ruff check, ruff format --check, pytest gegen einen PostgreSQL-Dienst. Frontend: npm ci, tsc --noEmit, eslint, vitest, Bundle-Bau.
build.yml Push auf main, Tags v* Baut beide Images für linux/amd64 und lädt sie in die Gitea-Registry. Kein Deploy das Ausrollen erfolgt von Hand.

Benötigte Repo-Secrets

Name Zweck Woher
REGISTRY_TOKEN Anmeldung an git.menzel.center zum Hochladen der Images Gitea → Benutzereinstellungen → Applications → Generate New Token mit dem Recht write:package

Anlegen unter Repository → Settings → Actions → Secrets → Add Secret.

Als Benutzername verwendet der Workflow ${{ github.actor }}, also den Auslöser des Laufs. Dieser Benutzer braucht Schreibrecht auf die Pakete des Namensraums menzeljonas.

Erzeugte Tags

Auslöser Tags
Push auf main :main, :sha-<kurz>
Tag v1.2.3 :1.2.3, :1.2, :latest

Zusätzlich legt jeder Lauf ein :buildcache-Manifest ab. Es dient ausschließlich dem Schichten-Cache und ist nicht zum Ausrollen gedacht.

Voraussetzungen an den Runner

Der Runner muss Docker erreichen können (gemounteter Socket) und das Label ubuntu-latest anbieten. Die vollständige Einrichtung steht in ../../docs/runner.md.