# 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.