docs(adr): add directory ownership ADR 0006, fix provider workflow location
This commit is contained in:
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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 |
|
|
||||||
|
|||||||
Reference in New Issue
Block a user