Close 0.3.17 operational follow-ups

This commit is contained in:
Jens
2026-08-12 15:12:51 +02:00
parent 4822ee6880
commit 7b6f6d43fc
9 changed files with 108 additions and 97 deletions
+31 -32
View File
@@ -1,40 +1,39 @@
# Gitea push-to-deploy (self-hosted, geen handmatige variabelenvulling)
# Gitea immutable releasepad
Push naar `main` of `master` triggert automatisch:
Een push naar `main` publiceert geen productiecode. Alleen een expliciete semantische
tag `v*.*.*` start `.gitea/workflows/release.yml`. De runner:
- checkout op de server runner
- `bash scripts/deploy_docker.sh`
- deploy met `docker compose up -d --build`
1. verifieert de volledige repository;
2. bouwt de Unraid-image met commit- en versielabels;
3. publiceert die image naar de private Gitea-containerregistry;
4. genereert een SPDX-SBOM, digestbestand, checksums en release notes.
Deze workflow gebruikt defaults en hoeft niet te wachten op repo-secrets voor host/ssh/credentials.
Productie wordt daarna expliciet op de volledige `versie@sha256:digest` gepind.
Hierdoor kan een gewone documentatie- of codepush nooit ongemerkt productie
overschrijven en bestaat geen parallel mutable push-to-deploypad meer.
## Vereiste eenmalige setup op de server
## Vereiste runnerconfiguratie
1. Start en registreer een self-hosted Gitea-runner voor deze repo.
2. Zorg dat die runner Docker/Compose kan draaien in de projectmap waar de runner draait.
3. Laat éénmaal dit script draaien op de server:
- De Gitea-runner accepteert label `ubuntu-latest` en kan jobcontainers starten.
- `REGISTRY_USER` en `REGISTRY_TOKEN` zijn repositorysecrets met uitsluitend de
noodzakelijke package-schrijfrechten.
- Unraid gebruikt een afzonderlijk `read:package`-token om gepubliceerde images te
pullen; dat token staat alleen in de root-Dockerconfig op de server.
- De runnerhost heeft voldoende vrije Docker-address-pools voor tijdelijke
jobnetwerken; volg daarvoor de netwerksectie in
[Unraid-deployment](UNRAID_DEPLOYMENT.md#docker-netwerkcapaciteit).
```bash
bash scripts/deploy_docker.sh
```
## Publiceren en uitrollen
Daarna is het gedrag volledig push-only:
1. Maak en verifieer een database- en configuratieback-up.
2. Push de geverifieerde releasecommit naar `main`.
3. Maak en push de semantische tag.
4. Wacht tot de Gitea-releasejob groen is en verifieer de artifactchecksums.
5. Pull op Unraid de gepubliceerde volledige digest.
6. Zet `VACATURERADAR_IMAGE` op `versie@sha256:digest` en herstart Compose met
`--no-build --force-recreate`.
7. Controleer intern en publiek `/health/live/` en `/health/ready/`, runtimeversie,
containerhealth en restartteller.
- `git push` naar `main` of `master` → automatische deploy
## Defaults
- `APP_HOST`: hostname van de server (fallback: `hostname`)
- `APP_SCHEME`: `http`
- `DJANGO_DEBUG`: afgeleid uit `APP_SCHEME`
- `0` als `APP_SCHEME=https`
- `1` als `APP_SCHEME=http`
- `DEPLOY_COMPOSE_FILE`: `docker-compose.yml`
- `APP_ORIGINS`, `APP_HOSTS`, `APP_PORT`: optioneel en veilig overnemen als op runner gezet
## Endpoint na deploy
- `http://<runner-host>:1226/health/ready/`
- `http://<runner-host>:1226/health/live/`
Voor productie: zet later op de runner de gewenste runtime-omgeving (bijv. reverse proxy + TLS) en herstart push.
PostgreSQL, Redis en Ollama blijven niet publiek bereikbaar. Bewaar de vorige
digest totdat minstens één volledige schedulercyclus groen is.