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

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