2.3 KiB
2.3 KiB
Deploy-Pipeline
Überblick
Bei jedem Push auf main in git.hocks.eu (ah-admin/Mieterportal) läuft
automatisch die Pipeline „Build & Deploy" (sichtbar unter
https://git.hocks.eu/ah-admin/Mieterportal/actions):
- Checkout – Quellstand des Pushes
- Abhängigkeiten installieren –
npm ci - Typecheck –
tsc --noEmit(bricht den Deploy bei Typfehlern ab) - Anleitungs-Stand aktualisieren –
anleitung-meta.mjsschreibt Hash/Datum in die Anleitungsseite (Hash ausGITHUB_SHA, da im Job-Container kein.gitliegt) - Build –
npm run build - Deploy – Inhalt von
dist/wird nach/opt/mieterportal/distkopiert (Bind-Mount desmp-portal-nginx-Containers; Dateien kopieren, niemv, sonst folgt der Mount dem alten Inode) - Health-Check –
https://mieterportal.hocks.eu/muss antworten, sonst schlägt der Lauf fehl
Die Anleitungsseiten (Mieter + Verwaltung) sind Teil des Builds und werden damit mit jedem Deploy automatisch auf den aktuellen Stand gebracht.
Infrastruktur auf dem VPS (hocks.eu)
- Gitea (Container
gitea) – hostet das Repo, stellt die Actions-API bereit - act-runner (Container
act-runner, Compose:/opt/act-runner/docker-compose.yml, Config:/opt/act-runner/config.yaml) – registriert alshocks-vps-runner, führt Jobs innode:22-alpine-Containern aus - Volume-Whitelist: Der Job-Container mountet
/opt/mieterportalals/mp(Eintragcontainer.valid_volumesim Runner; im Workflow alsoptions: -v /opt/mieterportal:/mp)
Manueller Deploy (Notfall)
Pipeline kaputt oder Runner offline:
npm ci && npx tsc --noEmit && npm run build
pscp -r dist root@hocks.eu:/tmp/dist-neu
ssh root@hocks.eu "rm -rf /opt/mieterportal/dist/* && cp -a /tmp/dist-neu/. /opt/mieterportal/dist/"
Wartung
- Runner-Logs:
docker logs act-runner - Runner neu starten:
cd /opt/act-runner && docker compose restart - Neuen Runner registrieren: Registrierungstoken erzeugen
(Gitea Admin → Actions → Runners, oder API
POST /api/v1/admin/actions/runners/registration-token), dann alsGITEA_RUNNER_REGISTRATION_TOKENin die Compose-Datei eintragen,data/.runnerlöschen und Container neu starten. Token danach wieder aus der Compose-Datei entfernen.