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
83 lines
2.5 KiB
Markdown
83 lines
2.5 KiB
Markdown
# 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
|
|
|
|
```mermaid
|
|
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.
|