Co-authored-by: moilanik <niko.moilanen@tietoevry.com> Reviewed-on: #15
3.2 KiB
Reusable workflowt
Provider-workflowt tarjoavat ydintoiminnallisuuden. Consumer kokoaa ne haluamakseen pipelineksi. Esimerkkitoteutus:
example-*-tiedostot.
Yhteiset konventiot
Kaikki workflowt:
- Käyttävät
concurrency:-ryhmää estämään saman branchin rinnakkaiset ajot - Provider-workflowt lukevat konfiguraation inputtina (
env_json) - Statusraportointi: tool-jobit natiivilla, test-jobit API:lla raporttilinkin takia (ADR 0007)
- Exit-koodi aina ylös, ei pipeä (ADR 0008)
Provider-workflowt
config-provider.yml — Konfiguraation lataus ja validointi
Trigger: workflow_call
Inputs:
| Parametri | Pakollinen | Kuvaus |
|---|---|---|
config_path |
Kyllä | Polku .conf-tiedostoon |
Secrets:
| Secret | Pakollinen | Kuvaus |
|---|---|---|
GITEA_TOKEN |
Kyllä | Validointia varten |
GIT_PAGES_PUBLISH_TOKEN |
Kyllä | Validointia varten |
Outputs:
| Output | Kuvaus |
|---|---|
env_json |
JSON-muotoiset ympäristömuuttujat |
config_path |
Sama polku takaisin (DRY downstream-käyttöön) |
Steppi-kaavio:
checkout → validate CI config → parse conf to JSON
check-version.yml — Version ja artifactin tarkistus
Trigger: workflow_call — käytetään vain main-haarassa
Inputs: env_json
Outputs: artifact_exists (true/false), version (string)
Steppi-kaavio:
checkout → laske versio package.json + git-tageista → output
docker-build-push.yml — Docker build & push
Trigger: workflow_call
Inputs: env_json, version
Secrets: GITEA_TOKEN, DOCKER_USERNAME, DOCKER_PASSWORD
Steppi-kaavio:
build-push (build + push samassa jobissa, ei levyn kautta) → tag-commit
Consumer-esimerkki (example-*)
example-feature.yml — Feature-haaran CI
Trigger: push [branches-ignore: main]
load-config → bats + cucumber → report-summary (always)
example-main.yml — Main-haaran CI
Trigger: push [branches: main]
load-config → check-version →
[artifact exists] → done
[no artifact] → bats + cucumber → report-summary (always) → docker-build-push
example-bats-tests.yml — Bats unit-testit
Trigger: workflow_call
Ajaa Bats-testit Docker-kontissa, generoi coveragen (bashcov), julkaisee
raportit git-pagesiin, asettaa commit-statuksen linkillä raporttiin.
example-cucumber-tests.yml — Cucumber hyväksymätestit
Trigger: workflow_call
Ajaa Cucumber-testit Node-kontissa, julkaisee raportit git-pagesiin, asettaa commit-statuksen linkillä raporttiin.
report-summary.yml — Raporttien koontinäkymä
Trigger: workflow_call — ajetaan if: always() testien jälkeen
Inputs: env_json, suites (space-separated lista suite-nimistä)
Generoi Markdown-taulukon GITHUB_STEP_SUMMARY:yn kaikista julkaistuista
raporteista. Renderöityy HTML:ksi Gitea 1.27+ Summary-välilehdellä.
Forward-compatibeli — ei haittaa vanhemmilla Gitea-versioilla.
Suunnitteilla
deploy.yml— GitOps-deployment (dispatch-workflow.sh-pohjainen)test.yml— Klusteritason test flow