# 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 ```ini 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ä. **`secrets.GITEA_TOKEN` on Gitean automaattisesti generoima token, scopeutuu siihen repoon jossa workflow ajaa.** Se ei oikeuta dispatchaamaan toiseen repoon eikä kirjoittamaan toisen repon commit-statusta. Cross-repo-operaatioihin tarvitaan manuaalinen org-tason token. | Secret | Pakollinen | Käyttäjä | |---|---|---| | `GITEA_TOKEN` | Kyllä | `report-status.sh`, `check-version.yml`, `docker-build-push.yml`, `gitops-update.sh` (GitOps-repossa) | | `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: ```yaml 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ä: 1. `VERSION`-tiedosto (plain text, esim. `0.2`) 2. `package.json` → `.version`-kenttä (Node.js) 3. `pom.xml` → ``-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ää.