v4
This commit is contained in:
@@ -478,7 +478,74 @@ for owner_dir in "$DATA_ROOT"/*/; do
|
|||||||
done
|
done
|
||||||
```
|
```
|
||||||
|
|
||||||
## Avoimet asiat (ei tässä MVP:ssä)
|
## Deploy-järjestys (vaiheistus)
|
||||||
|
|
||||||
- ForwardAuth GET/HEAD-reitille (OIDC)
|
### Vaiheet
|
||||||
- 6 rinnakkaisen testin orkestrointi
|
|
||||||
|
| # | 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 <test-suite>` → 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 <revision>
|
||||||
|
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 <pod> -- 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 <pod> -- ls /app/data/test/hello/` → tiedostot näkyvissä |
|
||||||
|
| **Retention** | `kubectl exec <pod> -- bash /scripts/retention-run.sh` → exit 0, ei virheitä |
|
||||||
|
| **Provider-skripti (end-to-end)** | 1. `kubectl port-forward pod/<pod> 8080:8080 8081:8081` 2. `bash scripts/publish-git-pages.sh <test-suite>` → 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
|
||||||
|
|||||||
Reference in New Issue
Block a user