179f6a1b43
port forward, local publish ja luettu tämän repon linkin luomisen mallisella url julkaistu raportti
1.8 KiB
1.8 KiB
Design Rationale — git-pages → Nginx + PV
Päivitetty: 2026-06-28 — git-pages korvattu Nginx + upload-sidecar -arkkitehtuurilla.
Miksi git-pages poistettiin
Codeberg git-pages storage v2 pakottaa kaikki tiedostot yhteen .index-protobufiin per site. Raja on 1MB kovakoodattu. Monorepo täytti tämän — uusia raportteja ei voinut julkaista.
Uusi arkkitehtuuri
- Nginx palvelee staattisia tiedostoja suoraan PV:ltä
- Upload-sidecar (busybox httpd + CGI) ottaa vastaan PUT + tar.gz ja purkaa PV:lle
- URL = FS-polku —
/{owner}/{repo}/{branch}/{sha8}/{suite}/ - Branch raakana URL:ssa —
feature/xFS:ssä =feature/x/ - Linkki on aina 1-suuntainen — gitea → raportti
- GITEA_API_URL poistuu publish-skriptin pakollisista env-varista
Ratkaisun periaatteet
1. Ei välikerrosta — tiedostot suoraan PV:llä
git-pagesin .index-protobuf poistuu. Tiedostot ovat suoraan PV:llä kansiorakenteessa. Nginx palvelee niitä suoraan.
2. Yksinkertainen upload-sidecar
Python HTTP-serveri ottaa vastaan PUT-pyynnöt ja purkaa tar.gz:n oikeaan paikkaan. Ei monimutkaista API:a, ei tietokantaa.
3. Julkaisu ja luku eri porteilla
Eri portit mahdollistavat eri Traefik-säännöt: julkaisu vaatii BasicAuthin, luku on julkinen.
4. Retention lukee PV:tä suoraan
Ei HTTP API:a retentionia varten. Skripti listaa kansiot, tarkistaa branchit Giteasta, poistaa vanhat.
Rajapinnat
| Suunta | Protokolla | Auth | Kuvaus |
|---|---|---|---|
| Julkaisija → Traefik | HTTPS PUT | BasicAuth publish |
tar.gz → upload-sidecar |
| Selain → Traefik | HTTPS GET/HEAD | — | HTML-raportti nginxiltä |
| Retention → Gitea | HTTPS GET | PAT | branch-tarkistus |
| Traefik → nginx | HTTP :8080 | — | sisäverkko |
| Traefik → upload | HTTP :8081 | — | sisäverkko (BasicAuth tarkistettu) |