diff --git a/docs/git-pages-nginx-arkkitehtuuri.md b/docs/git-pages-nginx-arkkitehtuuri.md index c92b47c..7812d47 100644 --- a/docs/git-pages-nginx-arkkitehtuuri.md +++ b/docs/git-pages-nginx-arkkitehtuuri.md @@ -478,7 +478,74 @@ for owner_dir in "$DATA_ROOT"/*/; do done ``` -## Avoimet asiat (ei tässä MVP:ssä) +## Deploy-järjestys (vaiheistus) -- ForwardAuth GET/HEAD-reitille (OIDC) -- 6 rinnakkaisen testin orkestrointi +### Vaiheet + +| # | Vaihe | Mitä | Riippuvuus | +|---|-------|------|-----------| +| 1 | **Poista vanha PVC** | `kubectl delete pvc git-pages-data -n git-pages` (tai helm uninstall + uusi asennus) | Vanha git-pages-data .index-muodossa — tuhotaan | +| 2 | **Deployaa uusi chart** | `helm upgrade --install git-pages ./git-pages -n git-pages -f dev-values.yaml` | Uusi PVC luodaan tyhjänä. Vanhoja raportteja ei ole. | +| 3 | **Varmenna Nginx** | `curl localhost:8080/` → 404/autoindex | Nginx palvelee | +| 4 | **Varmenna upload** | `curl -X PUT -T test.tar.gz localhost:8081/test/` → 201 | CGI toimii | +| 5 | **Päivitä provider-skriptit** | `scripts/publish-git-pages.sh`, `scripts/report-status.sh`, `scripts/ci-report.sh` | Uusi URL-muoto | +| 6 | **Päivitä provider-workflow** | `.gitea/workflows/report-summary.yml` | BASE-muuttuja | +| 7 | **Varmenna CI-julkaisu** | `bash publish-git-pages.sh ` → 201 + URL | Koko ketju | + +### Consumer-workflowt EI päivitetä + +`.gitea/workflows/example-*` ja `.ci/scripts/*` (consumerien kopioimat skriptit) eivät muutu. + +### report-summary.yml + +On provider-workflow (ei `example-`-prefiksiä). Saa päivittyä. + +## Rollback-suunnitelma + +### Jos chart epäonnistuu + +```bash +helm rollback git-pages +git revert HEAD # tai git reset --hard ennen script-muutoksia +``` + +- Vanha PVC on poistettu → rollback palauttaa vanhan git-pages-deploymentin mutta ilman dataa +- Vanhaa `.index`-dataa ei palaudu — se tuhottiin vaiheessa 1 +- Jos uutta dataa on ehtinyt kertyä, se on uudella PVC:llä → vanha deployment ei löydä sitä + +### Suojaus + +Pidä vanha PVC hengessä (nimeä uudelleen, älä poista) kunnes rollback-ikkuna on umpeutunut: + +```bash +# Ennen vaihetta 1: uudelleennimeä vanha PVC +kubectl delete pvc git-pages-data -n git-pages --wait=false +kubectl patch pvc git-pages-data -n git-pages -p '{"metadata":{"finalizers":[]}}' --type merge # tarvittaessa +``` + +Jos rollback tarvitaan 24h sisällä, palauta vanha PVC backupista (esim. snapshot). + +## Varmennus (check-stepit) + +Jokaiselle komponentille check ennen seuraavaan vaiheeseen siirtymistä: + +| Vaihe | Check | +|-------|-------| +| **helm template** | `helm template git-pages ./git-pages -n git-pages -f dev-values.yaml` → deploymentissa 2 konttia (nginx + upload) | +| **Nginx** | `kubectl exec -- wget -qO- http://localhost:8080/` → 404 tai autoindex (ei connection refused) | +| **Upload CGI** | `echo "hello" \| tar czf /tmp/test.tar.gz -C /tmp . && curl -sS -X PUT -H "Content-Type: application/tar+gz" --data-binary @/tmp/test.tar.gz http://localhost:8081/test/hello/` → status 201. Sitten `kubectl exec -- ls /app/data/test/hello/` → tiedostot näkyvissä | +| **Retention** | `kubectl exec -- bash /scripts/retention-run.sh` → exit 0, ei virheitä | +| **Provider-skripti (end-to-end)** | 1. `kubectl port-forward pod/ 8080:8080 8081:8081` 2. `bash scripts/publish-git-pages.sh ` → output URL (`https://{host}/{owner}/{repo}/{branch}/{sha8}/{suite}/`) 3. `curl http://localhost:8080/{owner}/{repo}/{branch}/{sha8}/{suite}/` → 200, HTML näkyy 4. `curl -I http://localhost:8080/{owner}/{repo}/{branch}/{sha8}/{suite}/index.html` → 200 | + +## Data migration + +**Ei migraatiota.** Vanha PVC sisältää git-pages storage v2 -dataa (`.index` protobuf). Tämä data tuhotaan tarkoituksella: + +1. CI on rikki 1MB rajoitteen takia — uusia raportteja ei voi julkaista ennen kuin git-pages on poistettu +2. Vanhat raportit ovat vanhentuneita (branchit on jo saatettu poistaa, commitit vanhoja) +3. Uudet buildit tuottavat raportit uuteen järjestelmään ilman migraatiota + +**Toimenpide:** +- Poista vanha PVC ennen uuden chartin deployausta +- Uusi chart luo uuden tyhjän PVC:n +- CI ajaa uudet buildit → raportit kirjoitetaan Nginx+PV-malliin