Files
gitea-ci-library/docs/config-model.md
T
moilanik 504462b21e
CI Feature / Load example-gitea-env.conf to pipeline env (push) Successful in 27s
unit-tests Link to Bats reports
CI Feature / Bats tests (push) Successful in 1m40s
acc-tests Link to Cucumber reports
CI Feature / Cucumber tests (push) Successful in 1m7s
CI Feature / Report Summary (push) Successful in 5s
consumer project käyttöönotossa tulleitea muutoksia
2026-06-16 04:31:05 +03:00

3.8 KiB

Konfiguraatiomalli — gitea-env.conf

Consumer määrittelee ympäristökohtaiset arvot KEY=VALUE-muotoisessa .conf-tiedostossa. Providerin config-provider.yml validoi tiedoston ja muuntaa sen JSON:ksi (env_json), jota kaikki downstream-workflowt käyttävät.


Tiedoston sijainti ja nimi

Consumerin repossa: .gitea/workflows/gitea-env.conf (nimi vapaasti valittavissa — config-provider.yml:n config_path-input määrittää polun).

Esimerkki (tämän repon dogfood):

.gitea/workflows/example-gitea-env.conf

Skeema

KEY=VALUE

Yksi KEY=VALUE per rivi. Kommentit #-merkillä. Tyhjät rivit ohitetaan.

Pakolliset avaimet

Avain Kuvaus Esimerkki
GITEA_API_URL Gitea-instanssin URL https://gitea.example.com
GIT_PAGES_URL Raporttihostauksen URL https://reports.example.com

Docker-spesifit avaimet (vain jos käytetään docker-build-push.yml)

Avain Pakollinen Kuvaus
DOCKER_REGISTRY Kyllä Rekisterin host/path, esim. gitea.example.com/org
DOCKER_IMAGE_NAME Kyllä Kontin nimi ilman registry-prefixiä
DOCKER_UI_URL Ei Linkki kontin UI-näkymään registryssä
DOCKERFILE Ei Dockerfile-nimi, oletus Dockerfile

Esimerkki

GITEA_API_URL=https://gitea.example.com
GIT_PAGES_URL=https://reports.example.com
DOCKER_REGISTRY=gitea.example.com/myorg
DOCKER_IMAGE_NAME=temperature-store
DOCKER_UI_URL=https://gitea.example.com/myorg/-/packages/container/temperature-store
#DOCKERFILE=Dockerfile.platform

Salaisuudet

Salaisuudet eivät ole .conf-tiedostossa. Ne määritellään Gitean organization/repository secrets -mekanismissa ja välitetään workflowlle secrets: inherit -direktiivillä.

Secret Pakollinen Käyttäjä
GITEA_TOKEN Kyllä report-status.sh, check-version.yml, docker-build-push.yml
GIT_PAGES_PUBLISH_TOKEN Kyllä publish-git-pages.sh, config-provider.yml (validointi)
DOCKER_USERNAME Ei docker-build-push.yml (oletus: github.actor, ei pakollinen kaikissa registryissä)
DOCKER_PASSWORD Kyllä docker-build-push.yml

config-provider.yml — lataus ja validointi

Provider-workflow joka lukee .conf-tiedoston, validoi sen ja palauttaa JSON-muotoisen env_json:n.

Input: config_path (polku .conf-tiedostoon)

Output: env_json (JSON-string), config_path (sama polku takaisin)

Validointi:

  • .conf-tiedosto on olemassa
  • Jokaisella KEY=VALUE-rivillä on arvo (ei tyhjää)
  • URL-tyyppiset avaimet alkavat http:// tai https://
  • Pakolliset secretit (GITEA_TOKEN, GIT_PAGES_PUBLISH_TOKEN) on asetettu

Kutsu:

load-config:
    uses: org/gitea-ci-library/.gitea/workflows/config-provider.yml@main
    secrets: inherit
    with:
      config_path: .gitea/workflows/gitea-env.conf

check-version.yml — version päättely

Provider-workflow joka etsii version prioriteettijärjestyksessä:

  1. VERSION-tiedosto (plain text, esim. 0.2)
  2. package.json.version-kenttä (Node.js)
  3. pom.xml<version>-elementti (Maven)

Hakee git-tagit Gitea API:sta ja laskee seuraavan vapaan patch-version.

Output: artifact_exists (true/false), version (string)

Idempotentti: Jos commitilla on jo versiotagi, artifact_exists=true ja build-vaiheet skipataan. Samaa committia ei buildata kahdesti.


env_json-propagointi

gitea-env.conf  →  config-provider.yml  →  env_json (JSON-string)
                                              ↓
                        ci.yml with: env_json  →  kaikki downstream-workflowt

Jokainen provider-workflow purkaa tarvitsemansa arvot fromJson(inputs.env_json).KEY:lla. Consumerin ei tarvitse tietää mitä avaimia kukin provider käyttää.