- ADR 0004: commit-status-periaate (API vain tarvittaessa, natiivi riittää) - git-pages/docs/implementation-notes.md: tekniset huomiot - init-job.yaml: post-install hook luo placeholderin (.index olemassa) - values.yaml: initJob.enabled default - publish-git-pages.sh: poistettu PUT-fallback (init job hoitaa) - README: maininta automaattisesta initistä
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.jsonlistaa kaikki tiedostot (ProtoJSON).git-pages/archive.tarantaa 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.