2e5a4dca3a
CI Main / Bats tests (push) Successful in 1m34s
acc-tests Link to Cucumber reports
CI Main / Cucumber tests (push) Successful in 51s
CI Main / Load example-gitea-env.conf to pipeline env (push) Successful in 21s
CI Main / Check existing artifact (push) Successful in 13s
unit-tests Link to Bats reports
ci-docker-build-push Docker build & push 0.2.7 OK
CI Main / Build & Push Docker (push) Successful in 41s
CI Main / Report Summary (push) Successful in 6s
CI Main / Move provider version tag (push) Successful in 12s
Co-authored-by: moilanik <niko.moilanen@tietoevry.com> Reviewed-on: #20
80 lines
4.6 KiB
Markdown
80 lines
4.6 KiB
Markdown
# AI Context: Gitea Actions CI -kirjasto
|
||
|
||
**Updated**: 2026-06-15 (siivottu, provider/consumer-erottelu valmis)
|
||
|
||
## 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ä.
|
||
|
||
## Monorepo: kaksi erillistä kokonaisuutta
|
||
|
||
### 1. Juuri (`gitea-ci-library`)
|
||
Provider-kirjasto: reusable workflowt, scriptit, ADRt, dokumentaatio.
|
||
Consumer kutsuu provider-workflowta `uses:`-direktiivillä.
|
||
|
||
### 2. `git-pages/` — oma kokonaisuus
|
||
Helm-chartti Codeberg git-pagesille. Täysin itsenäinen — oma dokumentaatio,
|
||
omat tekniset valinnat, oma design-rationale. Kaikki git-pages-spesifi tieto
|
||
kuuluu `git-pages/docs/`-alle, ei juuren `docs/`-kansioon.
|
||
|
||
## Repository Structure
|
||
|
||
| Path | Purpose |
|
||
|---|---|
|
||
| `.gitea/workflows/config-provider.yml` | Provider: lataa + validoi config-tiedoston, tuottaa `env_json` |
|
||
| `.gitea/workflows/check-version.yml` | Provider: tarkistaa onko commitille jo artifact, laskee version |
|
||
| `.gitea/workflows/docker-build-push.yml` | Provider: buildaa + puskea Docker-imagen, tagittaa commitin |
|
||
| `.gitea/workflows/ci-container-build-push.yml` | Provider: buildaa + puskea CI-työkalukontin |
|
||
| `.gitea/workflows/example-*` | **Consumer-esimerkki**: tämän repon oma CI (dogfood) |
|
||
| `scripts/` | Provider-skriptit: `report-status.sh`, `publish-git-pages.sh`, `ci-validate.sh` |
|
||
| `.gitea/scripts/` | **Consumer-skriptit**: `bats-coverage.sh`, `bats-report.sh` |
|
||
| `docs/` | Arkkitehtuuri, ADRt (0004–0008) |
|
||
| `skills/consumer-pipelines/` | Consumer-pipeline-standardit — AI:n pakottavat säännöt consumer-CI:lle |
|
||
| `skills/ci-container-build/` | CI-kontin build-workflow'n template — `ci-container-build-push.yml` |
|
||
| `docs/adr/` | Architecture Decision Records |
|
||
| `git-pages/` | Raporttien hostaus (Helm-chartti) |
|
||
| `tests/` | Bats-testit skripteille |
|
||
|
||
### Provider workflowt (5 kpl)
|
||
|
||
| Workflow | Input | Output | Kuvaus |
|
||
|---|---|---|---|
|
||
| `config-provider.yml` | `config_path` | `env_json`, `config_path` | Validoi ja jäsentää `.conf` → JSON. Sama kutsu hoitaa validoinnin. |
|
||
| `check-version.yml` | `env_json` | `artifact_exists`, `version` | Tarkistaa git-tagit ja `package.json`:n, laskee seuraavan version. Vain main-haarassa. |
|
||
| `docker-build-push.yml` | `env_json`, `version` | — | Buildaa Docker-imagen, puskea rekisteriin, tagittaa commitin. |
|
||
| `ci-container-build-push.yml` | `env_json`, `dockerfile_path`, `image_name`, `tag` | — | Buildaa CI-työkalukontin, puskea rekisteriin. Ei versiointia eikä git-tägäystä. |
|
||
| `report-summary.yml` | `env_json`, `suites` | — | Generoi `GITHUB_STEP_SUMMARY`-taulukon raporttilinkeillä (Gitea 1.27+) |
|
||
|
||
### Example-tiedostot (consumer-referenssi)
|
||
|
||
| Tiedosto | Laukaisin | Flow |
|
||
|---|---|---|
|
||
| `example-feature.yml` | push [ei main] | load-config → bats + cucumber → report-summary |
|
||
| `example-main.yml` | push [main] | load-config → check-version → bats + cucumber → report-summary → docker-build-push |
|
||
| `example-bats-tests.yml` | workflow_call | Unit-testit Batsilla, raportit git-pagesiin, status linkillä |
|
||
| `example-cucumber-tests.yml` | workflow_call | Hyväksymätestit Cucumberilla, raportit git-pagesiin, status linkillä |
|
||
| `example-gitea-env.conf` | — | KEY=VALUE config tälle repolle |
|
||
|
||
## Key Technical Decisions
|
||
|
||
- **Provider & Consumer -malli**: `example-*`-tiedostot ovat consumer-esimerkkejä, provider-workflowt reusableja. ADR 0005.
|
||
- **Vain Gitea, vain reusable workflowt**: ei custom actioneita, ei multi-platform
|
||
- **Commit-status API vain raporttilinkeille**: Tool-jobit luottavat natiiviin. Test-jobit käyttävät API:a koska se on ainoa tapa upottaa raporttilinkki. ADR 0004, 0007.
|
||
- **Exit-koodi on ainoa onnistumisen mittari**: Ei pipeä, ei tiedostoheuristiikkaa. ADR 0008.
|
||
- **Raportit git-pagesissa**: HTML selailtavissa, retention automaattinen
|
||
- **GITHUB_STEP_SUMMARY**: Summary-näkymä raporttilinkeille Gitea 1.27:ssä (forward-compat)
|
||
|
||
## Common Commands
|
||
- 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> <context> [suite] [url]`
|
||
|
||
## What NOT to Do
|
||
- Älä lisää tukea muille Git-alustoille
|
||
- Älä lisää Docker custom actioneita ilman pakottavaa syytä
|
||
- Älä kirjoita git-pages-spesifiä tietoa juuren `docs/`-kansioon
|
||
- Älä käytä commit-status API:a jollei ole raporttia linkitettäväksi (ADR 0007)
|
||
- Älä käytä pipeä `run`-komennon viimeisenä — se syö exit-koodin (ADR 0008)
|