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

37 lines
1.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`](../../docs/runner.md).