Files
gitea-ci-library/docs/adr/0006-directory-ownership.md
T
moilanik fa4af77877
CI / load-config (push) Failing after 0s
CI / feature (push) Has been skipped
CI / main (push) Has been skipped
feat: refactor config flow and directory structure
- Create config-provider.yml (reusable workflow, conf→JSON)
- Replace duplicated job env blocks with workflow env + fromJson
- Move provider workflows to workflows/ directory
- Move consumer scripts to .gitea/scripts/
- Move feature-env.conf to .gitea/workflows/
- Add bats-report.sh for TAP→HTML conversion
- Update ci.yml with setup→needs→with pattern
- Add ADR 0006 directory ownership
- Document cross-job config propagation in ci-pipeline-practices.md
- Remove config.yaml, scripts/load-config.sh unused
2026-06-13 15:18:02 +03:00

81 lines
3.2 KiB
Markdown

# 6. Directory ownership — provider vs consumer
## Päätös
Provider-repossa (`gitea-ci-library`) on seuraavat kansiot ja tiedostot,
joilla on eri omistajuus- ja näkyvyyssäännöt:
| 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 |
## Perustelu
### Providerin `workflows/` (juuressa)
Providerin reusable workflow -tiedostot, joita consumer kutsuu
`uses:`-direktiivillä. Consumerilla on lukunäkyvyys mutta ei
muokkausvastuuta. Esimerkki:
```yaml
uses: niko/gitea-ci-library/workflows/config-provider.yml@v1
```
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 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.
### Consumerin `.gitea/workflows/`
Consumerin oma pipeline-logiikka. Consumer omistaa ja muokkaa.
Provider ei koskaan ohita tätä kansiota — ADR 0005.
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/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.
## Vaikutukset
- Provider voi muuttaa `workflows/` ja `scripts/` -kansioiden sisältöä
ilman consumerin hyväksyntää (versiovaihdon yhteydessä)
- Consumer voi muuttaa `.gitea/workflows/` ja `.gitea/scripts/` -kansioiden
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 |