- ADR 0004: commit-status-periaate (natiivi riittää, API vain custom-linkkiin)
- ADR 0005: provider & consumer -malli (ci-engine.yml lukittu rajapinta)
- docs/design-rationale: uusi periaate 1 "Hyödynnä natiivia",
periaate 2 korjattu (API vain tarvittaessa),
periaate 6 (MinIO→git-pages), teknologiavalinnat poistettu
- docs/config-model: isContainerBuild→isArtifactBuild, Docker-labelit poistettu
- docs/ai-context: monorepo-kuvaus (git-pages oma kokonaisuus, ohut rajapinta)
- docs/architecture, tech-stack, report-hosting, shared-scripts, workflows:
MinIO→git-pages, provider agnostinen build-ekosysteemeille
- docs/adr/: ADRt siirretty decisions/→adr/
- git-pages/docs: retention-osiot päivitetty CronJob→sidecar+HTTP API,
URL-kaava korjattu (reports/{sha8}/)
- git-pages/docs/implementation-notes: uusi (storage v2, Host-header,
whiteout, .init, PATCH+directoryt)
- git-pages/templates/init-job.yaml: post-install init (.index)
- scripts/publish-git-pages.sh: PUT-fallback poistettu (init hoitaa),
palauttaa BASE URL ilman index.html
3.9 KiB
git-pages
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/.
Quick Start
1. Secretit
Luo secretit ennen Helm-asennusta: docs/secrets.md
# Avaa secrets.md ja suorita snipletit siellä
# Palaa tähän jälkeen Helm-asennukseen
2. Instanssin values-tiedosto
# Muokkaa oma values-tiedosto (tai käytä dev-values.yaml)
cp git-pages/dev-values.yaml my-values.yaml
# Muuta: ingress.host, certificate.issuerRef.name, jne.
3. Helm-asennus
NS=git-pages
VALUES=my-values.yaml
helm upgrade --install git-pages ./git-pages \
-n "$NS" --create-namespace \
-f "$VALUES"
Helm ajaa asennuksen jälkeen init-jobin, joka PUTtaa paikanpitäjäsivun
git-pagesiin. Tämä luo tarvittavan .index-tiedoston — sen jälkeen
Gitea Actions -scriptit voivat käyttää suoraan PATCHia ilman
PUT-fallbackia.
Vie publish-token Gitea Actions-secretiin (per repo)
⚠️ Tehtävä jokaiselle repoille, joka julkaisee raportteja git-pagesiin.
NS=git-pages
REPO_OWNER="niko"
REPO_NAME="gitea-ci-library"
# 1. Lue plaintext-token erillisestä secretistä
TOKEN=$(kubectl get secret git-pages-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.
Käyttöönotto
1. Secretit
2. Instanssin values-tiedosto
values.yaml sisältää jaetut vakiot. Ympäristökohtaiset arvot omaan tiedostoon, esim.
dev-values.yaml / prod-values.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.
3. Helm-asennus
Repojuuresta (sama NS kuin docs/secrets.md):
NS=git-pages
VALUES=git-pages/dev-values.yaml
helm upgrade --install git-pages ./git-pages \
-n "$NS" --create-namespace \
-f "$VALUES"
helm template git-pages ./git-pages -f "$VALUES"
CI-julkaisu
Julkaisu DNS-osoitteeseen BasicAuthilla:
# Esimerkki: julkaise raportti
curl -X PATCH https://ci-reports.helm-dev.keskikuja.site/owner/repo/commit/sha8/ \
-H "Authorization: Basic $(echo -n "publish:$GIT_PAGES_PUBLISH_TOKEN" | base64)" \
-H "Content-Type: application/x-tar" \
--data-binary @raportti.tar
Vaaditut asetukset:
| Missä | Arvo |
|---|---|
| Gitea Actions secret | GIT_PAGES_PUBLISH_TOKEN (sama kuin K8s git-pages-publish-token token-avain) |
| Scriptissä | curl käyttää BasicAuth-headeria yllä |
K8s secretit (Traefik-yhteensopivuus):
git-pages-publish-auth= htpasswd (Traefik BasicAuth middleware)git-pages-publish-token= plaintext (luetaan Giteaan viedessä)
Tarkemmat secret-ohjeet: docs/secrets.md.