- 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
3.2 KiB
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:
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/jascripts/-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 |