# 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: `GIT_PAGES_PUBLISH_TOKEN` → Value: **liitä leikepöydältä** → Save > 💡 **Monelle repoille:** Toista vaiheet 3–4, 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:$GIT_PAGES_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 | `GIT_PAGES_PUBLISH_TOKEN` (sama kuin K8s `gitea-reports-publish-token` `token`-avain) | | Scriptissä | `bash scripts/publish-gitea-reports.sh ` | **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 `/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 retention‑sää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.