Co-authored-by: moilanik <niko.moilanen@tietoevry.com> Reviewed-on: #13
3.8 KiB
Konfiguraatiomalli — gitea-env.conf
Consumer määrittelee ympäristökohtaiset arvot KEY=VALUE-muotoisessa
.conf-tiedostossa. Providerinconfig-provider.ymlvalidoi 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://taihttps:// - Pakolliset secretit (
GITEA_TOKEN,GIT_PAGES_PUBLISH_TOKEN) on asetettu
Kutsu:
load-config:
uses: org/gitea-ci-library/.gitea/workflows/config-provider.yml@v1
secrets: inherit
with:
config_path: .gitea/workflows/gitea-env.conf
check-version.yml — version päättely
Provider-workflow joka etsii version prioriteettijärjestyksessä:
VERSION-tiedosto (plain text, esim.0.2)package.json→.version-kenttä (Node.js)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ää.