tägitys käyttöön consumer viittauksessa provider tiedostoihin
CI Feature / Load example-gitea-env.conf to pipeline env (push) Successful in 24s
unit-tests Link to Bats reports
CI Feature / Bats tests (push) Successful in 1m46s
acc-tests Link to Cucumber reports
CI Feature / Cucumber tests (push) Successful in 1m8s
CI Feature / Report Summary (push) Successful in 5s

This commit is contained in:
moilanik
2026-06-16 06:01:29 +03:00
parent 14a411e340
commit db1342685c
8 changed files with 208 additions and 8 deletions
+62 -6
View File
@@ -137,7 +137,7 @@ on:
jobs:
load-config:
uses: org/gitea-ci-library/.gitea/workflows/config-provider.yml@main
uses: org/gitea-ci-library/.gitea/workflows/config-provider.yml@v1
secrets: inherit
with:
config_path: .gitea/workflows/gitea-env.conf
@@ -159,7 +159,7 @@ jobs:
report-summary:
needs: [load-config, unit-tests, acc-tests]
if: always()
uses: org/gitea-ci-library/.gitea/workflows/report-summary.yml@main
uses: org/gitea-ci-library/.gitea/workflows/report-summary.yml@v1
with:
env_json: ${{ needs.load-config.outputs.env_json }}
suites: junit cucumber
@@ -181,14 +181,14 @@ on:
jobs:
load-config:
uses: org/gitea-ci-library/.gitea/workflows/config-provider.yml@main
uses: org/gitea-ci-library/.gitea/workflows/config-provider.yml@v1
secrets: inherit
with:
config_path: .gitea/workflows/gitea-env.conf
check-version:
needs: [load-config]
uses: org/gitea-ci-library/.gitea/workflows/check-version.yml@main
uses: org/gitea-ci-library/.gitea/workflows/check-version.yml@v1
secrets: inherit
with:
env_json: ${{ needs.load-config.outputs.env_json }}
@@ -212,7 +212,7 @@ jobs:
build-push:
needs: [load-config, check-version, unit-tests, acc-tests]
if: needs.check-version.outputs.artifact_exists != 'true'
uses: org/gitea-ci-library/.gitea/workflows/docker-build-push.yml@main
uses: org/gitea-ci-library/.gitea/workflows/docker-build-push.yml@v1
secrets: inherit
with:
env_json: ${{ needs.load-config.outputs.env_json }}
@@ -221,7 +221,7 @@ jobs:
report-summary:
needs: [load-config, unit-tests, acc-tests]
if: always()
uses: org/gitea-ci-library/.gitea/workflows/report-summary.yml@main
uses: org/gitea-ci-library/.gitea/workflows/report-summary.yml@v1
with:
env_json: ${{ needs.load-config.outputs.env_json }}
suites: junit cucumber
@@ -388,3 +388,59 @@ hajota vanhemmilla versioilla.
| `report-status.sh` | POSTaa commit-statuksen linkillä |
| `publish-git-pages.sh` | Julkaisee raporttihakemiston git-pagesiin |
| `ci-validate.sh` | Validoi `.conf`-tiedoston (kutsutaan `config-provider.yml`:stä) |
---
## ADR-yhteenveto — consumerin kannalta oleelliset säännöt
Nämä säännöt on formalisoitu [docs/adr/](docs/adr/)-hakemistossa. Tässä tiivistelmä
consumer-näkökulmasta:
### Reititin ei sisällä suorittavaa koodia (ADR 0010)
`ci-feature.yml` ja `ci-main.yml` ovat **puhtaita reitittimiä**:
- **Vain** `uses:`, `needs:` ja `if:` sallittu
- **Ei** `run:`-komentoja, ei inline-skriptejä, ei `actions/checkout`
Kaikki suorittava koodi on omissa `workflow_call`-tiedostoissaan:
- `ci-unit-tests.yml` — testikomento, publish, status
- `ci-acc-tests.yml` — testikomento, publish, status
- Provider-workflowt (`config-provider.yml`, `check-version.yml`, …)
### Yksi steppi = yksi workflow_call-tiedosto
Jokainen pipeline-steppi (testityyppi, build, deploy) on oma tiedostonsa.
Ei kahta eri komentoa samassa workflow'ssa. Tämä pitää reitittimet ohuina
ja steppitiedostot itsenäisinä — testattavissa erikseen.
### Provider-versio on `@v1` (ADR 0009)
Kaikki `org/gitea-ci-library/…`-viittaukset käyttävät `@v1`-tagia:
```yaml
uses: org/gitea-ci-library/.gitea/workflows/config-provider.yml@v1
```
`@main` on vain providerin oman repon sisäiseen dogfood-käyttöön.
Breaking changet on kielletty — `v1`-rajapinta on pysyvä.
### Exit-koodi on ainoa onnistumisen mittari (ADR 0008)
Älä käytä pipeä (`|`) komennon perässä — se syö exit-koodin.
Käytä redirectiä (`> file 2>&1`) jos haluat logit talteen.
### Commit-status vain raporttilinkille (ADR 0007)
`report-status.sh`-skriptiä käytetään VAIN kun on raportti linkitettäväksi.
Tool-jobit (build, deploy) luottavat Gitean natiiviin job-statukseen.
### Providerin checkout ei kuulu consumerille
Providerin scriptit haetaan `actions/checkout`-stepillä. Consumer käyttää
providerin määrittelemää polkua (`.ci/scripts/`). Consumer ei kopioi eikä
muokkaa providerin tiedostoja.
### Testattavuus
Jokainen `workflow_call`-tiedosto on testattavissa itsenäisesti — consumer
voi ajaa `ci-unit-tests.yml`:n paikallisesti act:lla tai Gitean
`workflow_dispatch`:llä ilman koko pipelineä.