# 6. Directory ownership — provider vs consumer ## Päätös Provider-repossa (`gitea-ci-library`) kansioiden omistajuus on seuraava: | Kansio / Tiedosto | Omistaja | Tyyppi | |-------------------|----------|--------| | `.gitea/workflows/` | Sekoitettu | Providerin reusable workflowt + consumerin pipeline | | `.gitea/workflows/gitea-env.conf` | Consumer | KEY=VALUE config | | `.gitea/scripts/` | Consumer | Consumer-skriptit | | `scripts/` | Provider | Providerin sisäiset työkalut | ## Reusable workflowt — sijaintipakko Gitea Actions vaatii, että `uses:`-direktiivillä kutsuttavat workflowt ovat muodossa `{owner}/{repo}/.gitea/workflows/{file}@{ref}`. **Tämä on Gitea Actionsin asettama tekninen rajoite.** Toimivia polkuja ovat vain: ``` # ✅ kelpaa uses: org/repo/.gitea/workflows/file.yml@branch # ❌ eivät kelpaa uses: org/repo/workflows/file.yml@branch uses: org/repo/.gitea/workflows/path/file.yml@branch uses: org/repo/scripts/workflow.yml@branch ``` 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. Erottelu on nimessä ja dokumentaatiossa, ei kansiorakenteessa: - `config-provider.yml`, `ci-engine.yml` — providerin tarjoamia - `ci.yml`, `build-feature.yml` — consumerin omistamia ## 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 ilman providerin workflowa. ## Consumerin `.gitea/scripts/` Consumerin omat skriptit, osana consumerin pipeline-logiikkaa. Kutsutaan consumerin workflowista ilman tupla checkouttia: `.gitea/scripts/bats-report.sh`. ## Consumerin `.gitea/workflows/gitea-env.conf` Consumerin konfiguraatiotiedosto. Providerin `config-provider.yml` lukee tämän ja muuntaa JSONiksi, mutta consumer omistaa sisällön. ## Vaikutukset - Provider voi muuttaa `scripts/` ja `config-provider.yml` sisältöä ilman consumerin hyväksyntää (versiovaihdon yhteydessä) - 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) - Sekä provider että consumer jakavat `.gitea/workflows/` — tämä on Gitea Actionsin tekninen rajoite, ei suunnittelupäätös