Files
gitea-ci-library/gitea-reports/README.md
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

180 lines
4.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# gitea-reports
Jaettu **Gitea CI -raporttien** tallennus- ja lukupaikka: HTML-raportit (esim. Cucumber)
commit-kohtaisiin polkuihin, selaimella avattavina linkkeinä Gitean commitin CI-job
raportista. Kuvaus ja perustelut: [docs/](docs/).
---
## Quick Start
### 1. Secretit
Luo secretit ennen Helm-asennusta: [docs/secrets.md](docs/secrets.md)
```bash
# Avaa secrets.md ja suorita snipletit siellä
# Palaa tähän jälkeen Helm-asennukseen
```
### 2. Instanssin values-tiedosto
```bash
# Muokkaa oma values-tiedosto (tai käytä dev-values.yaml)
cp gitea-reports/dev-values.yaml my-values.yaml
# Muuta: ingress.host, certificate.issuerRef.name, jne.
```
### 3. Helm-asennus
```bash
NS=gitea-reports
VALUES=gitea-reports/dev-values.yaml
helm upgrade --install gitea-reports ./gitea-reports \
-n "$NS" --create-namespace \
-f "$VALUES"
helm template gitea-reports ./gitea-reports -n "$NS" -f "$VALUES"
```
Nginx ja upload-sidecar käynnistyvät suoraan ilman init-vaihetta.
PV on tyhjä ennen ensimmäistä CI-julkaisua.
---
## Vie publish-token Gitea Actions-secretiin (per repo)
⚠️ **Tehtävä jokaiselle repoille**, joka julkaisee raportteja gitea-reportsiin.
```bash
NS=gitea-reports
REPO_OWNER="niko"
REPO_NAME="gitea-ci-library"
# 1. Lue plaintext-token erillisestä secretistä
TOKEN=$(kubectl get secret gitea-reports-publish-token -n "$NS" -o jsonpath='{.data.token}' | base64 -d)
# 2. Kopioi leikepöydälle
echo -n "$TOKEN" | pbcopy # macOS
# echo -n "$TOKEN" | xclip -sel clip # Linux
# 3. Avaa Gitea Actions secrets -sivu
open "https://gitea.app.keskikuja.site/${REPO_OWNER}/${REPO_NAME}/settings/actions/secrets"
# Linux: xdg-open "https://gitea.app.keskikuja.site/${REPO_OWNER}/${REPO_NAME}/settings/actions/secrets"
```
**Gitea UI:ssa:** New Secret → Name: `REPORTS_PUBLISH_TOKEN` → Value: **liitä leikepöydältä** → Save
> 💡 **Monelle repoille:** Toista vaiheet 34, tai katso [automatisointi](docs/secrets.md#automatisointi-useamman-repon-salaisuuden-lis%C3%A4%C3%A4miseen).
---
## Käyttöönotto
### 1. Secretit
[docs/secrets.md](docs/secrets.md)
### 2. Instanssin values-tiedosto
`values.yaml` sisältää jaetut vakiot. Ympäristökohtaiset arvot omaan tiedostoon, esim.
`dev-values.yaml` / `prod-values.yaml`:
```yaml
ingress:
host: pages.example.com # julkinen host (luku + julkaisu)
certificate:
issuerRef:
name: letsencrypt-prod # cert-manager ClusterIssuer / Issuer
kind: ClusterIssuer
persistence:
storageClass: "" # tyhjä = klusterin oletus
size: 5Gi
retention:
giteaApiUrl: https://gitea.example.com
rules:
default:
maxAgeDays: 90
keepMin: 5
branches:
main:
maxAgeDays: 365
keepMin: 20
```
Esimerkki dev-ympäristöstä: [dev-values.yaml](dev-values.yaml).
### 3. Helm-asennus
Repojuuresta (sama `NS` kuin [docs/secrets.md](docs/secrets.md)):
```bash
NS=gitea-reports
VALUES=gitea-reports/dev-values.yaml
helm upgrade --install gitea-reports ./gitea-reports \
-n "$NS" --create-namespace \
-f "$VALUES"
helm template gitea-reports ./gitea-reports -f "$VALUES"
```
---
## CI-julkaisu
Julkaisu DNS-osoitteeseen BasicAuthilla:
```bash
# Esimerkki: julkaise raportti
curl -X PUT \
-u publish:$REPORTS_PUBLISH_TOKEN \
-H "Content-Type: application/tar+gz" \
--data-binary @report.tar.gz \
https://ci-reports.helm-dev.keskikuja.site/{owner}/{repo}/{branch}/{sha8}/{suite}/
```
**Vaaditut asetukset:**
| Missä | Arvo |
|-------|------|
| Gitea Actions secret | `REPORTS_PUBLISH_TOKEN` (sama kuin K8s `gitea-reports-publish-token` `token`-avain) |
| Scriptissä | `bash scripts/publish-gitea-reports.sh <suite>` |
**K8s secretit (Traefik-yhteensopivuus):**
- `gitea-reports-publish-auth` = htpasswd (Traefik BasicAuth middleware)
- `gitea-reports-publish-token` = plaintext (luetaan Giteaan viedessä)
Tarkemmat secret-ohjeet: [docs/secrets.md](docs/secrets.md).
---
## Testaus
Retention-logiikalle on unit-testit, jotka testaa funktiot ja Phase 3 -säännöt
erikseen ilman ulkoisia riippuvuuksia.
```bash
cd gitea-reports
bats tests/retention.bats
```
Testit käyttävät `<root>/files/retention-lib.sh` -jaettua kirjastoa, jota myös
`retention-cleanup.sh` sourceaa.
**Vaatimukset:** `bats`, `jq`, `date` (GNU date tai BSD date ISO 8601 -tuella).
---
## Retention
Ylläpitoscripti, joka poistaa vanhat raportit PV:ltä suoraan retentionsääntöjen mukaan.
Ajetaan CronJobina Kubernetesissa.
Retention lukee PV:tä suoraan (find, ls, stat), tarkistaa branchin olemassaolon Giteasta,
ja poistaa vanhat commit-kansiot `rm -rf`-komentona. Ei HTTP API:a retentionia varten.