- 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
1.4 KiB
1.4 KiB
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.