db1342685c
CI Feature / Load example-gitea-env.conf to pipeline env (push) Successful in 24s
unit-tests Link to Bats reports
CI Feature / Bats tests (push) Successful in 1m46s
acc-tests Link to Cucumber reports
CI Feature / Cucumber tests (push) Successful in 1m8s
CI Feature / Report Summary (push) Successful in 5s
44 lines
1.6 KiB
Markdown
44 lines
1.6 KiB
Markdown
# 10. Pipeline-reititin — ei komentoja
|
|
|
|
## Päätös
|
|
|
|
CI-pipelinetiedostot (`ci-main.yml`, `ci-feature.yml`) ovat puhtaita
|
|
**reitittimiä**. Ne eivät saa sisältää `run:`-komentoja, inline-skriptejä
|
|
tai varsinaista build-/test-logiikkaa. Niiden ainoa sallittu sisältö on:
|
|
|
|
- `uses:` — viittaus reusable workflow'hun
|
|
- `needs:` — riippuvuus toisen jobin valmistumiseen
|
|
- `if:` — ehdollinen suoritus
|
|
- `secrets: inherit` — salaisuuksien välitys
|
|
|
|
## Mikä ei kuulu reitittimeen
|
|
|
|
- `run:`-komennot
|
|
- Inline-skriptit (shell, Python, tms.)
|
|
- `actions/checkout` (paitsi providerin sisäinen infrastruktuuri)
|
|
- Build-työkalut, testikomennot, Docker-komennot
|
|
- Raporttien generointi
|
|
|
|
## Missä logiikka on
|
|
|
|
| Kerros | Tiedosto | Sisältö |
|
|
|---|---|---|
|
|
| Reititin | `ci-main.yml`, `ci-feature.yml` | Vain `uses:`-kutsut |
|
|
| Workflow_call | `ci-unit-tests.yml`, `ci-acc-tests.yml`, … | Varsinainen testi-/build-logiikka |
|
|
| Provider | `config-provider.yml`, `check-version.yml`, … | Jaettu infrastruktuuri |
|
|
| Skriptit | `scripts/` | Apufunktiot (status, publish, validointi) |
|
|
|
|
## Perustelu
|
|
|
|
Reitittimen ja toteutuksen erottelu:
|
|
|
|
- Reititin kertoo **mitä** ajetaan ja **missä järjestyksessä** — luettavissa
|
|
yhdellä silmäyksellä ilman teknistä taustaa
|
|
- Toteutus (workflow_call) kertoo **miten** — tekninen henkilö voi keskittyä
|
|
yhteen tiedostoon kerrallaan
|
|
- Providerin reusable workflow't eivät koskaan sisällä inline-logiikkaa —
|
|
skriptit ovat omissa tiedostoissaan
|
|
|
|
Tämä on sama periaate kuin web-sovelluksissa: reititin ei sisällä
|
|
business-logiikkaa, vain HTTP-verbit ja polut.
|