Files
gitea-ci-library/docs/design-rationale.md
moilanik 179f6a1b43 publish -> link -> read testattu "e2e"
port forward, local publish ja luettu tämän repon linkin luomisen mallisella url julkaistu raportti
2026-06-28 05:27:42 +03:00

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:ssafeature/x FS: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)