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