pipeline siivous ja testikattavuuden nosto (#9)
CI / load-config (push) Successful in 16s
CI / feature (push) Has been skipped
ci-cucumber Cucumber tests passed
ci-bats Bats tests
ci-build Build complete
CI / main (push) Successful in 2m23s

Co-authored-by: moilanik <niko.moilanen@tietoevry.com>
Reviewed-on: #9
This commit is contained in:
2026-06-14 03:26:44 +03:00
parent a1d1f1e5ab
commit c422825bf0
33 changed files with 779 additions and 302 deletions
+50 -4
View File
@@ -10,14 +10,14 @@ Consumer kutsuu provideria `uses:`-viittauksella. Ei discoveryä — polku kovak
### Polun muodostus
```
{owner}/{repo}/.gitea/workflows/ci-engine.yml@{ref}
{owner}/{repo}/.gitea/workflows/build-feature.yml@{ref}
```
| Osa | Mistä | Esimerkki (homelab) |
|-----|-------|---------------------|
| `owner` | Repopolun ensimmäinen osa — **käyttäjänimi tai org** | `niko` |
| `repo` | Repon nimi | `gitea-ci-library` |
| tiedosto | Providerin workflow | `.gitea/workflows/ci-engine.yml` |
| tiedosto | Providerin workflow | `.gitea/workflows/build-feature.yml` |
| `@ref` | Tag tai branch provider-repossa | `@v1` (tuotanto) |
**Owner ei ole org-pakotettu.** Homelabissa ei välttämättä ole organisaatiotasoa — silloin owner on
@@ -36,7 +36,7 @@ Consumerin `ci.yml`:
```yaml
jobs:
call-engine:
uses: niko/gitea-ci-library/.gitea/workflows/ci-engine.yml@v1
uses: niko/gitea-ci-library/.gitea/workflows/build-feature.yml@v1
secrets: inherit
```
@@ -56,7 +56,7 @@ niko/gitea-ci-library ←→ niko/gitea-ci-library (mirror tai push-mirror)
niko/gitea-ci-library/... niko/gitea-ci-library/...
```
Mirror pitää `ci-engine.yml`:n ja tagit (`v1`) saatavilla kulloisellakin palvelimella. Tämä korvaa
Mirror pitää `build-feature.yml`:n ja tagit (`v1`) saatavilla kulloisellakin palvelimella. Tämä korvaa
provider-repon checkout-hackit workflowissa — binding hoituu Gitean natiivilla `uses:`-mekanismilla.
Periaatteet: [tmp/data-flow-design.md](tmp/data-flow-design.md)
@@ -180,6 +180,52 @@ Tarkista ennen ensimmäistä ajoa: [Provider-binding](#provider-binding--miten-c
Lisätietoa runnerin toiminnasta, konteista ja DinD:stä: [docs/runner.md](docs/runner.md)
## Vaaditut secretit ja muuttujat
Consumer-repossa on oltava seuraavat asetukset:
### Repo Actions Secrets (`{repo} → Settings → Actions → Secrets`)
| Secret | Kuvaus |
|--------|--------|
| `GIT_PAGES_PUBLISH_TOKEN` | Git-pages-palvelimen BasicAuth-token. Nimi on lukittu — tämä tarkka nimi vaaditaan. |
`GITEA_TOKEN` on Gitean sisäinen secret (`secrets.GITEA_TOKEN`), joka on automauttisesti saatavilla — sitä ei tarvitse erikseen luoda.
### Config-tiedosto (`.gitea/workflows/gitea-env.conf`)
Tiedoston **nimi ja polku on lukittu**: `.gitea/workflows/gitea-env.conf` consumer-repon juuressa.
Tämän tiedoston perusteella `config-provider.yml` tuottaa `env_json`-outputin, joka välitetään
workflowille.
Tiedosto on `key=value`-muotoinen (kuten `.env`). Kommentit ja tyhjät rivit sallittuja.
**Vaaditut avaimet:**
| Avain | Kuvaus |
|-------|--------|
| `GITEA_API_URL` | Gitea-palvelimen base URL (esim. `https://gitea.app.example.com`) |
| `GIT_PAGES_URL` | Git-pages-palvelimen URL ilman trailing slash (esim. `https://ci-reports.example.com`) |
**Validointisäännöt:**
- Arvot eivät saa olla tyhjiä
- Jos avaimen nimessä on `URL`, arvon on alettava `http://` tai `https://`
- Tiedoston on oltava olemassa (muuten job keskeytyy)
Esimerkki:
```
GITEA_API_URL=https://gitea.app.example.com
GIT_PAGES_URL=https://ci-reports.example.com
```
### Validaatio
Jokaisen jobin alussa `ci-validate.sh` tarkistaa:
- `.gitea/workflows/gitea-env.conf` on olemassa ja sen arvot ovat validit
- `GITEA_TOKEN` ja `GIT_PAGES_PUBLISH_TOKEN` on asetettu
Jos validointi epäonnistuu, job keskeytyy exit-koodilla 1 ja Gitean commit-status näyttää epäonnistumisen linkkinä lokiin.
### Muuta
| Muuttuja | Kuvaus |