bc6bb78973
CI Git-Pages Main / Load git-pages.gitea-env.conf to pipeline env (push) Successful in 34s
CI Main / Check existing artifact (push) Successful in 22s
CI Git-Pages Main / Build & Push Helm chart (push) Successful in 48s
CI Main / Bats tests (push) Successful in 1m34s
acc-tests Cucumber test report
CI Main / Cucumber tests (push) Successful in 1m45s
CI Main / Load example-gitea-env.conf to pipeline env (push) Successful in 34s
CI Git-Pages Main / Check existing artifact (push) Successful in 21s
ci-helm-build-push Helm push 0.1.5
unit-tests Bats test report
CI Git-Pages Main / Update chart to the cluster (push) Failing after 0s
ci-docker-build-push Docker push 0.2.25
CI Git-Pages Main / Report Summary (push) Successful in 7s
CI Main / Build & Push Docker (push) Successful in 44s
CI Main / GitOps (push) Failing after 22s
CI Main / Move provider version tag (push) Has been skipped
CI Main / Report Summary (push) Successful in 6s
Co-authored-by: moilanik <niko.moilanen@tietoevry.com> Reviewed-on: #37
131 lines
4.1 KiB
Markdown
131 lines
4.1 KiB
Markdown
# 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` → `<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ää.
|