docs(adr): add directory ownership ADR 0006, fix provider workflow location
CI / load-config (push) Successful in 12s
ci-bats Bats tests
ci-cucumber Cucumber tests passed
ci-build Build complete
CI / feature (push) Successful in 1m29s
CI / main (push) Has been skipped

This commit is contained in:
moilanik
2026-06-13 15:20:47 +03:00
parent fa4af77877
commit 6a4e3626a6
4 changed files with 33 additions and 56 deletions
+1 -1
View File
@@ -6,7 +6,7 @@ on:
jobs: jobs:
load-config: load-config:
uses: niko/gitea-ci-library/workflows/config-provider.yml@feature/pipeline-cleanup uses: niko/gitea-ci-library/.gitea/workflows/config-provider.yml@feature/pipeline-cleanup
with: with:
config_path: .gitea/workflows/feature-env.conf config_path: .gitea/workflows/feature-env.conf
+32 -55
View File
@@ -2,79 +2,56 @@
## Päätös ## Päätös
Provider-repossa (`gitea-ci-library`) on seuraavat kansiot ja tiedostot, Provider-repossa (`gitea-ci-library`) kansioiden omistajuus on seuraava:
joilla on eri omistajuus- ja näkyvyyssäännöt:
| Kansio | Omistaja | Näkyvyys | Tyyppi | | Kansio / Tiedosto | Omistaja | Tyyppi |
|--------|----------|----------|--------| |-------------------|----------|--------|
| `workflows/` | Provider | Consumer kutsuu `uses:` | Reusable workflowt | | `.gitea/workflows/` | Sekoitettu | Providerin reusable workflowt + consumerin pipeline |
| `scripts/` | Provider | Vain providerin sisäinen | Bash-skriptit | | `.gitea/workflows/feature-env.conf` | Consumer | KEY=VALUE config |
| `.gitea/workflows/` | Consumer | Consumerin oma pipeline | Pipeline-logiikka | | `.gitea/scripts/` | Consumer | Consumer-skriptit |
| `.gitea/scripts/` | Consumer | Consumerin oma | Consumer-skriptit | | `scripts/` | Provider | Providerin sisäiset työkalut |
| `.gitea/workflows/feature-env.conf` | Consumer | Consumerin konffi | KEY=VALUE config |
## Perustelu ## Reusable workflowt — sijaintipakko
### Providerin `workflows/` (juuressa) Gitea Actions vaatii, että `uses:`-direktiivillä kutsuttavat workflowt
ovat muodossa `{owner}/{repo}/.gitea/workflows/{file}@{ref}`.
Providerin reusable workflow -tiedostot, joita consumer kutsuu Tästä syystä providerin reusable workflowt (`config-provider.yml`,
`uses:`-direktiivillä. Consumerilla on lukunäkyvyys mutta ei `ci-engine.yml`) ovat samassa `.gitea/workflows/`-kansiossa consumerin
muokkausvastuuta. Esimerkki: pipeline-tiedostojen (`ci.yml`, `build-feature.yml`) kanssa.
```yaml Erottelu on nimessä ja dokumentaatiossa, ei kansiorakenteessa:
uses: niko/gitea-ci-library/workflows/config-provider.yml@v1 - `config-provider.yml`, `ci-engine.yml` — providerin tarjoamia
``` - `ci.yml`, `build-feature.yml` — consumerin omistamia
Tämä on providerin julkinen rajapinta. Sijainti `workflows/` (juuressa) ## Providerin `scripts/` (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 — Providerin sisäiset työkalut. Consumer ei koskaan kutsu näitä suoraan —
vain providerin workflowt kutsuvat tupla checkoutin kautta: vain providerin workflowt kutsuvat tupla checkoutin kautta:
`.ci/scripts/publish-git-pages.sh`. `.ci/scripts/publish-git-pages.sh`.
Consumerilla ei ole suoraa polkua näihin tiedostoihin — ne saavuttaa Consumerilla ei ole suoraa polkua näihin tiedostoihin ilman providerin
vain providerin workflowjen kautta, jotka tupla checkouttaa providerin. workflowa.
### Consumerin `.gitea/workflows/` ## Consumerin `.gitea/scripts/`
Consumerin oma pipeline-logiikka. Consumer omistaa ja muokkaa. Consumerin omat skriptit, osana consumerin pipeline-logiikkaa.
Provider ei koskaan ohita tätä kansiota — ADR 0005. Kutsutaan consumerin workflowista ilman tupla checkouttia:
`.gitea/scripts/bats-report.sh`.
Tässä repossa (dogfood) consumer on sama repo, joten `.gitea/workflows/` ## Consumerin `.gitea/workflows/feature-env.conf`
näyttää providerin tiedostojen rinnalla. Arkkitehtuurisesti ne ovat
erillisiä: jos consumer olisi eri repo, `.gitea/workflows/` olisi siellä.
### Consumerin `.gitea/scripts/` Consumerin konfiguraatiotiedosto. Providerin `config-provider.yml`
lukee tämän ja muuntaa JSONiksi, mutta consumer omistaa sisällön.
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 ## Vaikutukset
- Provider voi muuttaa `workflows/` ja `scripts/` -kansioiden sisältöä - Provider voi muuttaa `scripts/` ja `config-provider.yml` sisältöä
ilman consumerin hyväksyntää (versiovaihdon yhteydessä) ilman consumerin hyväksyntää (versiovaihdon yhteydessä)
- Consumer voi muuttaa `.gitea/workflows/` ja `.gitea/scripts/` -kansioiden - Consumer voi muuttaa `.gitea/workflows/ci.yml`,
sisältöä ilman providerin muutoksia `.gitea/workflows/build-feature.yml` ja `.gitea/scripts/` sisältöä
ilman providerin muutoksia
- Providerin workflowt käyttävät `.ci/scripts/...` -polkua (tupla checkout) - Providerin workflowt käyttävät `.ci/scripts/...` -polkua (tupla checkout)
- Consumerin workflowt käyttävät `.gitea/scripts/...` -polkua (natiivi checkout) - Consumerin workflowt käyttävät `.gitea/scripts/...` -polkua (natiivi checkout)
- Config-tiedoston muoto on consumerin päätettävissä — provider vain lukee - Sekä provider että consumer jakavat `.gitea/workflows/` — tämä on
Gitea Actionsin tekninen rajoite, ei suunnittelupäätös
## 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 |