Files
gitea-ci-library/gitea-reports/docs/architecture.md
T
moilanik baa5e8dac6
CI Feature / Load example-gitea-env.conf to pipeline env (push) Failing after 16s
CI Feature / Bats tests (push) Has been skipped
CI Feature / Cucumber tests (push) Has been skipped
CI Feature / Report Summary (push) Successful in 5s
git-pages siivottu pois, ja secret nimi nyt giteassa REPORTS_PUBLISH_TOKEN
2026-06-28 08:45:35 +03:00

2.5 KiB

Architecture — Nginx + upload-sidecar

gitea-reports on korvattu. Uusi arkkitehtuuri: Nginx palvelee staattisia tiedostoja PV:ltä, upload-sidecar (busybox httpd + CGI) ottaa vastaan tar.gz-PUTit.

Yleiskuvaus

Yksi apex-host, monta Gitea-repoa. URL = FS-polku: /{owner}/{repo}/{branch}/{sha8}/{suite}/. Ei Host-header-kikkaa, ei slugia, ei rewritea.

Komponentit

Komponentti Rooli
nginx Palvelee staattisia tiedostoja /app/data -rootista (:8080)
upload (Python HTTP server) Vastaanottaa PUT /path + tar.gz body, purkaa PV:lle (:8081)
PVC Raporttisisältö suoraan FS-muodossa
Service ClusterIP :8080 (read), :8081 (write)
Traefik IngressRoute PATCH/PUT → upload:8081 (BasicAuth), GET/HEAD → nginx:8080
Traefik Middleware gitea-reports-publish-auth (BasicAuth), HTTPS-redirect
cert-manager Certificate TLS

URL ja sisältö

https://ci-reports.helm-dev.keskikuja.site/niko/gitea-ci-library/main/f4baa286/cucumber/index.html
         └── selvä URL ──┘ └─────────── Gitea-yhteensopiva polku ──────────────────────────┘

Levyllä:

/app/data/{owner}/{repo}/{branch}/{sha8}/
  .meta
  index.html
  ...

Järjestelmäkaavio

flowchart TB
    subgraph ext["Ulkoiset"]
        PUB["Julkaisija\n(CI)"]
        BR["Selain"]
        GITEA["Gitea API\n(branch-lista)"]
    end

    subgraph edge["Reuna"]
        TRAEFIK["Traefik\nIngressRoute + Middleware"]
        CM["cert-manager\nTLS"]
    end

    subgraph cluster["Pod"]
        NGINX["nginx\n(kontti)"]
        UPLOAD["upload sidecar\n(Python HTTP server)"]
        PVC["PVC /app/data"]
    end

    PUB -->|"PUT + BasicAuth\ntar.gz"| TRAEFIK
    BR -->|"GET/HEAD"| TRAEFIK
    TRAEFIK -->|"PUT/PATCH"| UPLOAD
    TRAEFIK -->|"GET/HEAD"| NGINX
    CM --> TRAEFIK
    UPLOAD -->|"extract to PV"| PVC
    NGINX --> PVC

Julkaisu

  1. Julkaisija paketoi tiedostot tar.gz:ksi
  2. PUT https://{host}/{owner}/{repo}/{branch}/{sha8}/{suite}/
  3. Traefik tarkistaa BasicAuth → välittää upload-sidecarille
  4. CGI purkaa tar.gz:n suoraan PV:lle: /app/data/{owner}/{repo}/{branch}/{sha8}/{suite}/

Luku

  1. Selain avaa URL:n (GET/HEAD)
  2. Traefik välittää nginxille
  3. Nginx palauttaa suoraan PV:ltä

Retention

CronJob lukee PV:tä suoraan (find, ls, stat), tarkistaa branchin olemassaolon Giteasta, poistaa vanhat commit-kansiot.