Files
gitea-ci-library/git-pages/docs/implementation-notes.md
T
moilanik 28754bd410
ci-report POC report published
CI / call-engine (push) Successful in 14s
docs: POC-katselmus — git-pages retention, ADRt, dokumenttipäivitykset
- 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
2026-06-12 08:55:23 +03:00

1.5 KiB

Implementation Notes

Teknisiä huomioita git-pages 0.9.1:n käyttäytymisestä, joita ei ole ilmeistä dokumentaatiosta.

Storage v2 (Protobuf manifest)

Git-pages 0.9.1 käyttää v2-arkkitehtuuria. Kaikki sisältö on pakattu Protobuf-manifestiin (site/{host}/.index), ei flat-FS:nä. Tästä seuraa:

  • Tiedostoja ei voi etsiä tai poistaa find/rm-komennoilla
  • .git-pages/manifest.json listaa kaikki tiedostot (ProtoJSON)
  • .git-pages/archive.tar antaa koko sisällön (saattaa truncata HTTP/2:ssa)

Host-header

Git-pages valitsee sivuston Host-headerin perusteella. Ilman oikeaa Hostia palauttaa 404.

  • Ulkoiset requestit: Traefik välittää alkuperäisen Hostin automaattisesti
  • Sidecar/localhost: -H "Host: ci-reports.helm-dev.keskikuja.site"

PATCH ja directory-entryt

Jos PATCH-tar sisältää directory-entryn (tyyppi directory, tar typeflag '5'), se korvaa koko hakemiston dokumentaation mukaan. Tar saa sisältää vain file- ja symlink-entryjä, jotta PATCH toimii odotetusti.

Whiteout — tiedostojen poisto

Ainoa tapa poistaa tiedostoja ilman koko sivuston PUT-korvausta:

  • Tarissa character device entry (CHRTYPE, tar typeflag '4')
  • devmajor=0, devminor=0
  • PATCH:ataan sivuston juureen

.init — ensimmäinen julkaisu

Ensimmäinen julkaisu vaatii PUTin, joka luo .index-tiedoston. Tämän jälkeen PATCH riittää.

Helm-chartin post-install -job hoitaa tämän automaattisesti: consumerien publish-scriptien ei tarvitse tuntea asennuksen tilaa.