docs(adr): add directory ownership ADR 0006, fix provider workflow location
CI / load-config (push) Successful in 12s
ci-bats Bats tests
ci-cucumber Cucumber tests passed
ci-build Build complete
CI / feature (push) Successful in 1m29s
CI / main (push) Has been skipped

This commit is contained in:
moilanik
2026-06-13 15:20:47 +03:00
parent fa4af77877
commit 6a4e3626a6
4 changed files with 33 additions and 56 deletions
+32 -55
View File
@@ -2,79 +2,56 @@
## Päätös
Provider-repossa (`gitea-ci-library`) on seuraavat kansiot ja tiedostot,
joilla on eri omistajuus- ja näkyvyyssäännöt:
Provider-repossa (`gitea-ci-library`) kansioiden omistajuus on seuraava:
| Kansio | Omistaja | Näkyvyys | Tyyppi |
|--------|----------|----------|--------|
| `workflows/` | Provider | Consumer kutsuu `uses:` | Reusable workflowt |
| `scripts/` | Provider | Vain providerin sisäinen | Bash-skriptit |
| `.gitea/workflows/` | Consumer | Consumerin oma pipeline | Pipeline-logiikka |
| `.gitea/scripts/` | Consumer | Consumerin oma | Consumer-skriptit |
| `.gitea/workflows/feature-env.conf` | Consumer | Consumerin konffi | KEY=VALUE config |
| Kansio / Tiedosto | Omistaja | Tyyppi |
|-------------------|----------|--------|
| `.gitea/workflows/` | Sekoitettu | Providerin reusable workflowt + consumerin pipeline |
| `.gitea/workflows/feature-env.conf` | Consumer | KEY=VALUE config |
| `.gitea/scripts/` | Consumer | Consumer-skriptit |
| `scripts/` | Provider | Providerin sisäiset työkalut |
## Perustelu
## Reusable workflowt — sijaintipakko
### Providerin `workflows/` (juuressa)
Gitea Actions vaatii, että `uses:`-direktiivillä kutsuttavat workflowt
ovat muodossa `{owner}/{repo}/.gitea/workflows/{file}@{ref}`.
Providerin reusable workflow -tiedostot, joita consumer kutsuu
`uses:`-direktiivillä. Consumerilla on lukunäkyvyys mutta ei
muokkausvastuuta. Esimerkki:
Tästä syystä providerin reusable workflowt (`config-provider.yml`,
`ci-engine.yml`) ovat samassa `.gitea/workflows/`-kansiossa consumerin
pipeline-tiedostojen (`ci.yml`, `build-feature.yml`) kanssa.
```yaml
uses: niko/gitea-ci-library/workflows/config-provider.yml@v1
```
Erottelu on nimessä ja dokumentaatiossa, ei kansiorakenteessa:
- `config-provider.yml`, `ci-engine.yml` — providerin tarjoamia
- `ci.yml`, `build-feature.yml` — consumerin omistamia
Tämä on providerin julkinen rajapinta. Sijainti `workflows/` (juuressa)
eikä `.gitea/workflows/` korostaa, että kyseessä on providerin tarjoama
palvelu, ei consumerin oma pipeline.
### Providerin `scripts/` (juuressa)
## Providerin `scripts/` (juuressa)
Providerin sisäiset työkalut. Consumer ei koskaan kutsu näitä suoraan —
vain providerin workflowt kutsuvat tupla checkoutin kautta:
`.ci/scripts/publish-git-pages.sh`.
Consumerilla ei ole suoraa polkua näihin tiedostoihin — ne saavuttaa
vain providerin workflowjen kautta, jotka tupla checkouttaa providerin.
Consumerilla ei ole suoraa polkua näihin tiedostoihin ilman providerin
workflowa.
### Consumerin `.gitea/workflows/`
## Consumerin `.gitea/scripts/`
Consumerin oma pipeline-logiikka. Consumer omistaa ja muokkaa.
Provider ei koskaan ohita tätä kansiota — ADR 0005.
Consumerin omat skriptit, osana consumerin pipeline-logiikkaa.
Kutsutaan consumerin workflowista ilman tupla checkouttia:
`.gitea/scripts/bats-report.sh`.
Tässä repossa (dogfood) consumer on sama repo, joten `.gitea/workflows/`
näyttää providerin tiedostojen rinnalla. Arkkitehtuurisesti ne ovat
erillisiä: jos consumer olisi eri repo, `.gitea/workflows/` olisi siellä.
## Consumerin `.gitea/workflows/feature-env.conf`
### Consumerin `.gitea/scripts/`
Consumerin omat skriptit, jotka ovat osa consumerin pipeline-logiikkaa.
Provider ei omista eikä ylläpidä näitä.
Consumer-skriptit kutsutaan consumerin workflowista ilman tupla
checkouttia: `.gitea/scripts/bats-report.sh`.
### Consumerin `.gitea/workflows/feature-env.conf`
Consumerin konfiguraatiotiedosto consumerin omassa kansiossa.
Providerin `config-provider.yml` lukee tämän ja muuntaa JSONiksi, mutta
consumer omistaa sisällön.
Consumerin konfiguraatiotiedosto. Providerin `config-provider.yml`
lukee tämän ja muuntaa JSONiksi, mutta consumer omistaa sisällön.
## Vaikutukset
- Provider voi muuttaa `workflows/` ja `scripts/` -kansioiden sisältöä
- Provider voi muuttaa `scripts/` ja `config-provider.yml` sisältöä
ilman consumerin hyväksyntää (versiovaihdon yhteydessä)
- Consumer voi muuttaa `.gitea/workflows/` ja `.gitea/scripts/` -kansioiden
sisältöä ilman providerin muutoksia
- Consumer voi muuttaa `.gitea/workflows/ci.yml`,
`.gitea/workflows/build-feature.yml` ja `.gitea/scripts/` sisältöä
ilman providerin muutoksia
- Providerin workflowt käyttävät `.ci/scripts/...` -polkua (tupla checkout)
- Consumerin workflowt käyttävät `.gitea/scripts/...` -polkua (natiivi checkout)
- Config-tiedoston muoto on consumerin päätettävissä — provider vain lukee
## Vertailu vanhaan rakenteeseen
| Entinen sijainti | Uusi sijainti | Peruste |
|------------------|---------------|---------|
| `.gitea/workflows/config-provider.yml` | `workflows/config-provider.yml` | Providerin julkinen rajapinta pois consumer-kansiosta |
| `.gitea/workflows/ci-engine.yml` | `workflows/ci-engine.yml` | Sama peruste |
| `scripts/bats-report.sh` | `.gitea/scripts/bats-report.sh` | Consumerin oma skripti |
- Sekä provider että consumer jakavat `.gitea/workflows/` — tämä on
Gitea Actionsin tekninen rajoite, ei suunnittelupäätös