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
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
# 4. Commit-statusviestit — periaate
|
||||
|
||||
## Päätös
|
||||
|
||||
Gitea Actions näyttää jobien tilan (checkmark, risti, spinner) commit-näkymässä
|
||||
**automaattisesti**. Tämä on ensisijainen tapa, eikä sitä korvata.
|
||||
|
||||
Commit-status API:a (`/api/v1/repos/{owner}/{repo}/statuses/{sha}`) käytetään
|
||||
**vain** kun natiivi toiminta ei riitä — ensisijaisesti custom-raporttilinkin
|
||||
välittämiseen commit-näkymään.
|
||||
|
||||
## Periaatteet
|
||||
|
||||
1. Gitea Actionsin automaattinen commit-status on ensisijainen.
|
||||
2. API:a kutsutaan vain tarpeeseen: linkki ulkoiseen raporttiin.
|
||||
3. Jokainen API-kutsussa käytettävä `context`-avain on uniikki.
|
||||
4. State-arvojen on oltava Gitea API:n valideja (`success`, `failure`,
|
||||
`pending`, `error`, `warning`).
|
||||
|
||||
## Tausta
|
||||
|
||||
Jenkins-versiossa jokainen build-vaihe raportoi APIin, koska Jenkins ei
|
||||
tarjonnut natiivia commit-statusnäkymää. Gitea Actionsissa tämä tulee
|
||||
automaattisesti — sama tieto kahdesta paikasta aiheuttaa melua eikä lisää
|
||||
arvoa.
|
||||
@@ -0,0 +1,66 @@
|
||||
# 5. Provider & Consumer -malli
|
||||
|
||||
## Päätös
|
||||
|
||||
Provider (gitea-ci-library) ja Consumer (mikropalveluprojekti) erotetaan
|
||||
selkeällä rajapinnalla: `.gitea/workflows/ci-engine.yml` on ainoa pinta,
|
||||
jota consumer kutsuu.
|
||||
|
||||
Kaikki muu providerin koodi (scriptit, git-pages-helmi, retention) on
|
||||
sisäistä toteutusta, johon consumerilla ei ole suoraa pääsyä eikä
|
||||
riippuvuutta.
|
||||
|
||||
## Rajapinnat
|
||||
|
||||
### Consumer → Provider (pakollinen)
|
||||
|
||||
```yaml
|
||||
# .gitea/workflows/ci.yml — consumerin repo
|
||||
jobs:
|
||||
ci:
|
||||
uses: niko/gitea-ci-library/.gitea/workflows/ci-engine.yml@v1
|
||||
secrets: inherit
|
||||
```
|
||||
|
||||
Consumer:
|
||||
- Omistaa pipeline-logiikan (mitä testejä ajetaan, missä järjestyksessä)
|
||||
- Luo raportit omiin polkuihinsa (`reports/{sha8}/{step}/`)
|
||||
- Luo `.meta`-tiedostot per step
|
||||
- Määrittelee Gitea-secretit (`GIT_PAGES_PUBLISH_TOKEN`, `GITEA_TOKEN`)
|
||||
|
||||
### Provider → Consumer (mitä provider tarjoaa)
|
||||
|
||||
- **Raporttien julkaisu**: consumerin tuottamat raportit viedään
|
||||
git-pages-palveluun osoitteeseen, josta ne ovat selaimella luettavissa.
|
||||
- **Commit-status linkillä**: jokaiselle raportille luodaan commit-status,
|
||||
jonka kautta käyttäjä pääsee suoraan raporttiin Gitean commit-näkymästä.
|
||||
- **Orkestrointi**: build-ketjun ylittäessä reporajat, provider huolehtii
|
||||
workflown käynnistyksestä ja tilan seurannasta.
|
||||
- **Raporttien elinkaari**: vanhat raportit poistetaan automaattisesti
|
||||
retention-sääntöjen mukaan.
|
||||
|
||||
### Provider (sisäinen toteutus, ei consumerin rajapinta)
|
||||
|
||||
- Git-pages Helm-chartti
|
||||
- Retention sidecar
|
||||
- Scriptit ja työkalut (toteutus avoin, uudelleenkirjoitettavissa)
|
||||
- Kaikki paitsi `ci-engine.yml` on sisäistä toteutusta ja voi muuttua
|
||||
ilman versiopäivitystä
|
||||
|
||||
## Periaatteet
|
||||
|
||||
1. `ci-engine.yml` on **lukittu rajapinta**. Consumer kutsuu tätä, ei
|
||||
koskaan providerin scriptejä suoraan. `ci-engine.yml` voi muuttua vain
|
||||
version vaihtuessa.
|
||||
2. Consumer omistaa pipeline-logiikan. Provider ei tiedä mitä testejä
|
||||
ajetaan, missä järjestyksessä tai millä työkaluilla.
|
||||
3. Providerin versiointi: tag (`v1`, `v2`, ...). Branchit ovat kehitystä
|
||||
varten, consumerit käyttävät tageja.
|
||||
|
||||
## Tausta
|
||||
|
||||
Jenkins-versiossa kaikki logiikka oli yhdessä kirjastossa. Gitea Actionsin
|
||||
reusable workflow -mekanismi pakottaa selkeämpään erotteluun: consumer
|
||||
kutsuu provideria, mutta omistaa oman pipeline-logiikkansa. Tämä vähentää
|
||||
providerin kompleksisuutta ja antaa consumerille vapauden päättää mitä
|
||||
ajetaan.
|
||||
Reference in New Issue
Block a user