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:
+81
-50
@@ -1,67 +1,98 @@
|
||||
# AI Context: Gitea Actions CI -kirjasto
|
||||
|
||||
**Updated**: 2026-06-08
|
||||
**Updated**: 2026-06-12 (POC-vaihe, suunniteltu uudelleenkirjoitus)
|
||||
|
||||
## Project Overview
|
||||
Gitea Actions reusable workflow -kirjasto mikropalveluiden build-, testaus-, raportointi-, deployment- ja test flow -prosessien orkestrointiin. Korvaa `ci-jenkins-library`:n Gitea-natiivilla toteutuksella. Mikropalvelut käyttävät kirjastoa `uses:`-direktiivillä ja konfiguroivat itsensä `ci-flow-values.yaml`:lla.
|
||||
Gitea Actions reusable workflow -kirjasto mikropalveluiden build-, testaus-,
|
||||
raportointi-, deployment- ja test flow -prosessien orkestrointiin. Korvaa
|
||||
`ci-jenkins-library`:n Gitea-natiivilla toteutuksella. Mikropalvelut
|
||||
käyttävät kirjastoa `uses:`-direktiivillä.
|
||||
|
||||
## Architecture
|
||||
- 4 reusable workflow'ta: `ci-feature.yml`, `ci-master.yml`, `deploy.yml`, `test.yml`
|
||||
- 4 jaettua bash-skriptiä (`scripts/`): `report-status.sh`, `dispatch-workflow.sh`, `push-reports.sh`, `tag-commit.sh`
|
||||
- Raportit MinIO:ssa (S3 + static web), OIDC-autentikointi Traefikin kautta
|
||||
- Cross-repo commit traceability Gitea REST API:n kautta
|
||||
- `report-service/`-moduuli samassa repossa: raporttiskriptit, retention CronJob, index.html-generointi
|
||||
- Normatiivinen arkkitehtuuri: `docs/architecture.md`, perustelut `docs/design-rationale.md`
|
||||
POC on valmis: raporttien julkaisu git-pagesiin ja commit-status linkillä
|
||||
toimii.
|
||||
|
||||
## Monorepo: kaksi erillistä kokonaisuutta
|
||||
|
||||
Tämä repo on käytännössä monorepo, jossa on kaksi itsenäistä osaa:
|
||||
|
||||
### 1. Juuri (`gitea-ci-library`)
|
||||
Provider-kirjasto: reusable workflowt, scriptit, ADRt, dokumentaatio.
|
||||
Rajapinta: `.gitea/workflows/ci-engine.yml` — ainoa pinta, jota consumerit
|
||||
kutsuvat.
|
||||
|
||||
### 2. `git-pages/` — oma kokonaisuus
|
||||
Helm-chartti Codeberg git-pagesille. Täysin itsenäinen — oma dokumentaatio,
|
||||
omat tekniset valinnat, oma design-rationale. Kohdeltava kuten se olisi jo
|
||||
oma reponsa: kaikki git-pages-spesifi tieto kuuluu `git-pages/docs/`- alle,
|
||||
ei juuren `docs/`-kansioon.
|
||||
|
||||
### Rajapinta juuren ja git-pagesin välillä
|
||||
|
||||
Ohut ja yksiselitteinen:
|
||||
|
||||
```
|
||||
scripts/publish-git-pages.sh <report-dir>
|
||||
→ PATCH tar osoitteeseen PAGES_HOST
|
||||
→ palauttaa BASE URL:n
|
||||
|
||||
git-pages tarjoaa:
|
||||
- HTTP endpoint (GET/PATCH/PUT)
|
||||
- retention (automaattinen)
|
||||
- TLS, BasicAuth (Traefik)
|
||||
```
|
||||
|
||||
Juuri ei tiedä git-pagesin sisäisestä toiminnasta (storage v2, .index,
|
||||
blob-arkkitehtuuri). Git-pages ei tiedä workflowista, scripteistä tai
|
||||
provider-logiikasta.
|
||||
|
||||
## Architecture (POC-tila)
|
||||
- **Provider & Consumer -malli**: `ci-engine.yml` on lukittu rajapinta.
|
||||
ADR 0005.
|
||||
- **Raporttien hostaus**: git-pages Helm-chartilla (`git-pages/`).
|
||||
- **Retention**: sidecar samassa podissa, HTTP API localhost:3000,
|
||||
Gitea API branch-check.
|
||||
- **Commit-status**: Gitea Actions näyttää automaattisesti. API vain
|
||||
custom-linkkiin. ADR 0004.
|
||||
- **Julkaisu**: `publish-git-pages.sh` → PATCH tar git-pagesiin.
|
||||
|
||||
## Repository Structure
|
||||
|
||||
| Path | Purpose |
|
||||
|---|---|
|
||||
| `.gitea/workflows/` | Reusable workflow -tiedostot (`ci-feature.yml`, `ci-master.yml`, `deploy.yml`, `test.yml`) |
|
||||
| `scripts/` | Jaetut bash-skriptit |
|
||||
| `report-service/` | Raporttipalvelun koodi (retention, indeksigenerointi) |
|
||||
| `docs/` | Arkkitehtuuri-, vaatimus- ja konfiguraatiodokumentaatio |
|
||||
| `docs/tickets/` | Toteutustiketit (0001–0012), yksi per feature-branch |
|
||||
| `docs/test-plan/` | TDD-opas: 3-kerrosmalli, kehityslooppi, mock, kontekstikuratointi |
|
||||
| `docs/test-plan/tdd-guide.md` | Testivetoisen kehityksen menetelmädokumentti |
|
||||
| `tests/` | Bats-testit skripteille ja workflow-validointi |
|
||||
| `tests/features/` | Cucumber `.feature`-tiedostot (yksi per tiketti, tägätty @mock/@real/@ticket-NNNN) |
|
||||
| `tests/helpers/` | Jaettu mock-palvelin (Gitea API + MinIO) |
|
||||
| `.gitea/workflows/ci.yml` | Kirjaston oma CI — dogfood (käyttää itse itseään) |
|
||||
| `.gitea/workflows/` | `ci-engine.yml` (ainoa reusable workflow POC-vaiheessa) |
|
||||
| `scripts/` | `publish-git-pages.sh`, `report-status.sh`, `dispatch-workflow.sh` |
|
||||
| **`git-pages/`** | **Oma kokonaisuus: Helm-chartti + docs + retention** |
|
||||
| `docs/` | Root-tason arkkitehtuuri, ADRt (0001–0005) |
|
||||
| `docs/adr/` | Architecture Decision Records |
|
||||
| `tests/` | Bats-testit skripteille |
|
||||
| `.gitea/workflows/ci.yml` | Dogfood — kutsuu `ci-engine.yml`:a |
|
||||
|
||||
**Tarkemmat git-pages-asiat:** `git-pages/docs/` (implementation-notes,
|
||||
architecture, design-rationale, secrets, tech-stack).
|
||||
|
||||
## Key Technical Decisions
|
||||
- **Vain Gitea.** Ei multi-platform-tukea (GitLab, BitBucket, GitHub)
|
||||
- **Ei omaa runtimea.** Reusable workflowt, ei Docker custom actioneita (ellei pakko)
|
||||
- **Konfiguraatio repoon.** `ci-flow-values.yaml` projektin juuressa, infra-asetukset Gitea org secrets/variables
|
||||
- **Vaiheittainen test flow.** Ei rinnakkaista suoritusta — deterministinen, debuggattava
|
||||
- **Raportit MinIO:ssa.** Gitea artifact-järjestelmä ei tue HTML-selailtavuutta
|
||||
- **Docker-rekisterit:** MVP:ssä vain Gitea Packages. Factory/adapter-pattern valmiina Artifactorylle/Nexukselle
|
||||
- **MVP-scope:** `doNotDowngrade` ei mukana, vain Gitea Packages docker-rekisterinä
|
||||
- **Provider & Consumer**: `ci-engine.yml` lukittu rajapinta, muu koodi
|
||||
vapaasti muutettavissa
|
||||
- **Vain Gitea, vain reusable workflowt**: ei custom actioneita, ei
|
||||
multi-platform
|
||||
- **Raportit git-pagesissa**: HTML selailtavissa, retention automaattinen
|
||||
- **Git-pages omana kokonaisuutena**: voi erottaa omaksi repokseen
|
||||
tulevaisuudessa
|
||||
|
||||
## Tech Stack
|
||||
- **Runtime:** Bash 4.0+, curl 7.0+, jq 1.6+, git 2.30+, MinIO client (`mc`)
|
||||
- **Alusta:** Gitea Actions 1.21+, Gitea act runner 0.2+
|
||||
- **Integraatiot:** Gitea REST API (`/api/v1/`), MinIO S3 API, SonarQube REST API
|
||||
- **Tuetut build-ekosysteemit:** Java/Maven, Java/Gradle, Node.js/npm
|
||||
- **Tuetut testikehykset:** Cucumber, JUnit, JaCoCo, Maven Site, custom HTML
|
||||
## Tech Stack (POC)
|
||||
- **Runtime:** Bash, curl, jq, python3 (retention whiteout)
|
||||
- **Alusta:** Gitea Actions, Gitea act runner
|
||||
- **Hostaus:** git-pages 0.9.1 (Codeberg), Traefik, cert-manager
|
||||
- **Integraatiot:** Gitea REST API, Gitea Packages
|
||||
|
||||
## Common Commands
|
||||
- Workflow-triggerit: `push` branchiin tai `workflow_dispatch`
|
||||
- Skriptien kutsuminen tapahtuu workflow-stepeistä, ei paikallisesti
|
||||
- `ci-flow-values.yaml` validointi: skeema `docs/config-model.md`:ssa
|
||||
- Bats-testit: `bats tests/` — ajaa kaikki skripti- ja workflow-testit
|
||||
- Testit vaativat: `bats` (Bash Automated Testing System), `jq`, `yq`
|
||||
|
||||
## Development Process
|
||||
- TDD: Red-Green-Refactor jokaiselle tiketille. Testit ensin, toteutus vasta kun testi epäonnistuu.
|
||||
- Ominaisuusbranchit: `feature/NNNN-tiketin-nimi` (esim. `feature/0001-report-status-sh`)
|
||||
- Yksi tiketti per sessio. Tiketit riippuvuusjärjestyksessä 0001 → 0012.
|
||||
- Ennen jokaista tikettiä: lataa `docs/test-plan/tdd-guide.md` + tiketin Required context -skillin lisäksi
|
||||
- Dogfood: `.gitea/workflows/ci.yml` — kirjaston oma CI käyttää omia reusable workflow'itaan
|
||||
- Helm-asennus: `helm upgrade --install git-pages ./git-pages -n <ns> -f <values>`
|
||||
- Julkaisu: `bash scripts/publish-git-pages.sh <report-dir>`
|
||||
- Status: `bash scripts/report-status.sh <state> <desc> <url> <context>`
|
||||
|
||||
## What NOT to Do
|
||||
- Älä lisää tukea muille Git-alustoille (GitLab, BitBucket, GitHub)
|
||||
- Älä lisää tukea muille Git-alustoille
|
||||
- Älä lisää Docker custom actioneita ilman pakottavaa syytä
|
||||
- Älä siirrä konfiguraatiota pois reposita (`ci-flow-values.yaml`)
|
||||
- Älä lisää rinnakkaista test flow -suoritusta
|
||||
- Älä lisää ulkoista orkestraattoria — Gitea REST API riittää
|
||||
- Älä käytä `repository_dispatch`-webhookia test flow -ketjutukseen
|
||||
- Älä kirjoita git-pages-spesifiä tietoa juuren `docs/`-kansioon —
|
||||
kuuluu `git-pages/docs/`-alle
|
||||
- Älä POSTaa commit-status APIin jokaiselle vaiheelle — natiivi riittää
|
||||
|
||||
Reference in New Issue
Block a user