bd6ed5c2c2
CI Gitea Reports Main / Config load (push) Successful in 17s
CI Main / Config load (push) Successful in 20s
CI Gitea Reports Main / Latest version (push) Successful in 17s
CI Main / Latest versio (push) Successful in 19s
ci-helm-build-push Helm push 0.2.0
CI Gitea Reports Main / Build & Push Helm chart (push) Successful in 33s
gitops/gitea-ci-library/gitea-reports GitOps: gitea-reports 0.2.0
CI Gitea Reports Main / GitOps (push) Successful in 33s
CI Gitea Reports Main / Report Summary (push) Successful in 3s
CI Main / Bats tests (push) Failing after 1m16s
CI Main / Cucumber tests (push) Failing after 1m22s
CI Main / Build & Push Docker (push) Has been skipped
CI Main / GitOps (push) Has been skipped
CI Main / Move provider version tag (push) Has been skipped
CI Main / Report Summary (push) Successful in 3s
Co-authored-by: moilanik <niko.moilanen@tietoevry.com> Reviewed-on: #48
45 lines
1.8 KiB
Markdown
45 lines
1.8 KiB
Markdown
# 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/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) |
|