env conf ylimääräinen value pois
This commit is contained in:
@@ -19,8 +19,7 @@ on:
|
||||
|
||||
env:
|
||||
GITEA_API_URL: ${{ fromJson(inputs.env_json).GITEA_API_URL }}
|
||||
PAGES_HOST: ${{ fromJson(inputs.env_json).PAGES_HOST }}
|
||||
GIT_PAGES_PUBLISH_URL: ${{ fromJson(inputs.env_json).GIT_PAGES_PUBLISH_URL }}
|
||||
GIT_PAGES_URL: ${{ fromJson(inputs.env_json).GIT_PAGES_URL }}
|
||||
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||
GIT_PAGES_PUBLISH_TOKEN: ${{ secrets.GIT_PAGES_PUBLISH_TOKEN }}
|
||||
|
||||
|
||||
@@ -16,8 +16,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
GITEA_API_URL: https://gitea.app.keskikuja.site
|
||||
PAGES_HOST: ci-reports.helm-dev.keskikuja.site
|
||||
GIT_PAGES_PUBLISH_URL: https://ci-reports.helm-dev.keskikuja.site
|
||||
GIT_PAGES_URL: https://ci-reports.helm-dev.keskikuja.site
|
||||
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||
GIT_PAGES_PUBLISH_TOKEN: ${{ secrets.GIT_PAGES_PUBLISH_TOKEN }}
|
||||
steps:
|
||||
|
||||
@@ -1,3 +1,2 @@
|
||||
GITEA_API_URL=https://gitea.app.keskikuja.site
|
||||
PAGES_HOST=ci-reports.helm-dev.keskikuja.site
|
||||
GIT_PAGES_PUBLISH_URL=https://ci-reports.helm-dev.keskikuja.site
|
||||
GIT_PAGES_URL=https://ci-reports.helm-dev.keskikuja.site
|
||||
|
||||
@@ -192,17 +192,39 @@ Consumer-repossa on oltava seuraavat asetukset:
|
||||
|
||||
`GITEA_TOKEN` on Gitean sisäinen secret (`secrets.GITEA_TOKEN`), joka on automauttisesti saatavilla — sitä ei tarvitse erikseen luoda.
|
||||
|
||||
### Org/Repo Variables (`{repo} → Settings → Actions → Variables`)
|
||||
### Config-tiedosto (`.gitea/workflows/gitea-env.conf`)
|
||||
|
||||
Nämä tulevat `config-file`:n kautta (`env_json`-input). Katso [config-model.md](docs/config-model.md).
|
||||
Tiedoston **nimi ja polku on lukittu**: `.gitea/workflows/gitea-env.conf` consumer-repon juuressa.
|
||||
Tämän tiedoston perusteella `config-provider.yml` tuottaa `env_json`-outputin, joka välitetään
|
||||
workflowille.
|
||||
|
||||
Tiedosto on `key=value`-muotoinen (kuten `.env`). Kommentit ja tyhjät rivit sallittuja.
|
||||
|
||||
**Vaaditut avaimet:**
|
||||
|
||||
| Avain | Kuvaus |
|
||||
|-------|--------|
|
||||
| `GITEA_API_URL` | Gitea-palvelimen base URL (esim. `https://gitea.app.example.com`) |
|
||||
| `GIT_PAGES_URL` | Git-pages-palvelimen URL ilman trailing slash (esim. `https://ci-reports.example.com`) |
|
||||
|
||||
**Validointisäännöt:**
|
||||
- Arvot eivät saa olla tyhjiä
|
||||
- Jos avaimen nimessä on `URL`, arvon on alettava `http://` tai `https://`
|
||||
- Tiedoston on oltava olemassa (muuten job keskeytyy)
|
||||
|
||||
Esimerkki:
|
||||
```
|
||||
GITEA_API_URL=https://gitea.app.example.com
|
||||
GIT_PAGES_URL=https://ci-reports.example.com
|
||||
```
|
||||
|
||||
### Validaatio
|
||||
|
||||
Jokaisen jobin alussa ajetaan `ci-validate.sh`, joka tarkistaa:
|
||||
- Vaaditut ympäristömuuttujat on asetettu
|
||||
- URLit ovat oikeaa muotoa
|
||||
Jokaisen jobin alussa `ci-validate.sh` tarkistaa:
|
||||
- `.gitea/workflows/gitea-env.conf` on olemassa ja sen arvot ovat validit
|
||||
- `GITEA_TOKEN` ja `GIT_PAGES_PUBLISH_TOKEN` on asetettu
|
||||
|
||||
Jos validointi epäonnistuu, job keskeytyy selkeällä virheviestillä ja Gitean commit-status näyttää epäonnistumisen linkkinä lokiin.
|
||||
Jos validointi epäonnistuu, job keskeytyy exit-koodilla 1 ja Gitean commit-status näyttää epäonnistumisen linkkinä lokiin.
|
||||
|
||||
### Muuta
|
||||
|
||||
|
||||
+2
-2
@@ -32,7 +32,7 @@ Ohut ja yksiselitteinen:
|
||||
|
||||
```
|
||||
scripts/publish-git-pages.sh <report-dir>
|
||||
→ PATCH tar osoitteeseen PAGES_HOST
|
||||
→ PATCH tar osoitteeseen GIT_PAGES_URL
|
||||
→ palauttaa BASE URL:n
|
||||
|
||||
git-pages tarjoaa:
|
||||
@@ -48,7 +48,7 @@ provider-logiikasta.
|
||||
## Architecture (POC-tila)
|
||||
- **Provider & Consumer -malli**: `ci-engine.yml` on lukittu rajapinta.
|
||||
ADR 0005.
|
||||
- **Raporttien hostaus**: git-pages Helm-chartilla (`git-pages/`).
|
||||
- **Raporttien hostaus**: git-pages Helm-chartilla (`git-pages/`), `GIT_PAGES_URL` määrittää perusosoitteen.
|
||||
- **Retention**: sidecar samassa podissa, HTTP API localhost:3000,
|
||||
Gitea API branch-check.
|
||||
- **Commit-status**: Gitea Actions näyttää automaattisesti. API vain
|
||||
|
||||
@@ -75,7 +75,7 @@ gitea-env.conf → config-provider.yml → env_json (yksi JSON-string)
|
||||
GITEA_API_URL: ${{ fromJson(inputs.env_json).GITEA_API_URL }}
|
||||
(4)
|
||||
↓
|
||||
kaikki jobit → $GITEA_API_URL, $PAGES_HOST jne.
|
||||
kaikki jobit → $GITEA_API_URL, $GIT_PAGES_URL jne.
|
||||
(5)
|
||||
```
|
||||
|
||||
@@ -84,7 +84,7 @@ Vaiheet:
|
||||
2. `config-provider.yml` lukee confin ja tuottaa yhden JSON-stringin outputina
|
||||
3. `ci.yml` välittää JSONin `needs` + `with:` -ketjulla
|
||||
4. `build-feature.yml` purkaa arvot workflow `env:`-tasolle `fromJson()`:lla
|
||||
5. Kaikki jobit käyttävät valmiita env-muuttujia (`$PAGES_HOST` jne.)
|
||||
5. Kaikki jobit käyttävät valmiita env-muuttujia (`$GIT_PAGES_URL` jne.)
|
||||
|
||||
Avainkomponentit:
|
||||
- **config-provider.yml** — reusable workflow, joka muuntaa conf-tiedoston
|
||||
|
||||
@@ -5,8 +5,7 @@ SUITE_PATH="${1:-}"
|
||||
|
||||
[ -n "$SUITE_PATH" ] || { echo "ERROR: suite_path argument required" >&2; exit 1; }
|
||||
[ -n "${GITEA_API_URL:-}" ] || { echo "ERROR: GITEA_API_URL is not set" >&2; exit 1; }
|
||||
[ -n "${PAGES_HOST:-}" ] || { echo "ERROR: PAGES_HOST is not set" >&2; exit 1; }
|
||||
[ -n "${GIT_PAGES_PUBLISH_URL:-}" ] || { echo "ERROR: GIT_PAGES_PUBLISH_URL is not set" >&2; exit 1; }
|
||||
[ -n "${GIT_PAGES_URL:-}" ] || { echo "ERROR: GIT_PAGES_URL is not set" >&2; exit 1; }
|
||||
[ -n "${GIT_PAGES_PUBLISH_TOKEN:-}" ] || { echo "ERROR: GIT_PAGES_PUBLISH_TOKEN is not set" >&2; exit 1; }
|
||||
[ -n "${GITHUB_REPOSITORY:-}" ] || { echo "ERROR: GITHUB_REPOSITORY is not set" >&2; exit 1; }
|
||||
[ -n "${GITHUB_SHA:-}" ] || { echo "ERROR: GITHUB_SHA is not set" >&2; exit 1; }
|
||||
@@ -16,12 +15,11 @@ REPO="${GITHUB_REPOSITORY##*/}"
|
||||
SHA8="${GITHUB_SHA:0:8}"
|
||||
PAGES_USER="${GIT_PAGES_PUBLISH_USER:-publish}"
|
||||
REPORT_DIR="reports/${SHA8}/${SUITE_PATH%/}"
|
||||
REPORT_BASE="https://${PAGES_HOST}/${OWNER}/${REPO}/reports/${SHA8}"
|
||||
REPORT_BASE="${GIT_PAGES_URL}/${OWNER}/${REPO}/reports/${SHA8}"
|
||||
|
||||
[ -d "$REPORT_DIR" ] || { echo "ERROR: not a directory: $REPORT_DIR" >&2; exit 1; }
|
||||
|
||||
PUBLISH_BASE="${GIT_PAGES_PUBLISH_URL%/}"
|
||||
PUBLISH_SITE_URL="${PUBLISH_BASE}/"
|
||||
PUBLISH_SITE_URL="${GIT_PAGES_URL}/"
|
||||
|
||||
WORK=$(mktemp -d)
|
||||
TAR=$(mktemp)
|
||||
|
||||
+1
-2
@@ -6,8 +6,7 @@ SUITE_PATH="${1:-}"
|
||||
[ -n "$SUITE_PATH" ] || { echo "ERROR: suite_path argument required" >&2; exit 1; }
|
||||
[ -n "${GITEA_API_URL:-}" ] || { echo "ERROR: GITEA_API_URL is not set" >&2; exit 1; }
|
||||
[ -n "${GITEA_TOKEN:-}" ] || { echo "ERROR: GITEA_TOKEN is not set" >&2; exit 1; }
|
||||
[ -n "${PAGES_HOST:-}" ] || { echo "ERROR: PAGES_HOST is not set" >&2; exit 1; }
|
||||
[ -n "${GIT_PAGES_PUBLISH_URL:-}" ] || { echo "ERROR: GIT_PAGES_PUBLISH_URL is not set" >&2; exit 1; }
|
||||
[ -n "${GIT_PAGES_URL:-}" ] || { echo "ERROR: GIT_PAGES_URL is not set" >&2; exit 1; }
|
||||
[ -n "${GIT_PAGES_PUBLISH_TOKEN:-}" ] || { echo "ERROR: GIT_PAGES_PUBLISH_TOKEN is not set" >&2; exit 1; }
|
||||
|
||||
SCRIPT_DIR="$(dirname "$0")"
|
||||
|
||||
@@ -13,7 +13,7 @@ SUITE="${4:-}"
|
||||
|
||||
if [ -n "$SUITE" ]; then
|
||||
SUITE="${SUITE%/}/"
|
||||
URL="https://${PAGES_HOST}/${GITHUB_REPOSITORY}/reports/${GITHUB_SHA:0:8}/${SUITE}"
|
||||
URL="${GIT_PAGES_URL}/${GITHUB_REPOSITORY}/reports/${GITHUB_SHA:0:8}/${SUITE}"
|
||||
else
|
||||
URL="${GITEA_API_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}"
|
||||
fi
|
||||
|
||||
@@ -27,7 +27,7 @@ function bashQuiet(cmd) {
|
||||
}
|
||||
|
||||
function runReportStatus(args) {
|
||||
return bash(`export GITEA_API_URL="http://localhost:18080" GITEA_TOKEN="test-token-abc123" PAGES_HOST="reports.example.com" GITHUB_REPOSITORY="test-owner/test-repo" GITHUB_SHA="abc123def456789012345678901234567890abcd" GITHUB_RUN_ID="42"; bash "${REPORT_SCRIPT}" ${args}`);
|
||||
return bash(`export GITEA_API_URL="http://localhost:18080" GITEA_TOKEN="test-token-abc123" GIT_PAGES_URL="https://reports.example.com" GITHUB_REPOSITORY="test-owner/test-repo" GITHUB_SHA="abc123def456789012345678901234567890abcd" GITHUB_RUN_ID="42"; bash "${REPORT_SCRIPT}" ${args}`);
|
||||
}
|
||||
|
||||
function getMockBody() {
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
setup() {
|
||||
source tests/helpers/mock-api.sh
|
||||
export GITEA_API_URL="http://localhost:18080"
|
||||
export PAGES_HOST="reports.example.com"
|
||||
export GIT_PAGES_PUBLISH_URL="http://localhost:18080/"
|
||||
export GIT_PAGES_URL="http://localhost:18080"
|
||||
export GIT_PAGES_PUBLISH_TOKEN="publish-token-abc"
|
||||
export GITHUB_REPOSITORY="test-owner/test-repo"
|
||||
export GITHUB_SHA="abc123def456789012345678901234567890abcd"
|
||||
@@ -32,18 +31,11 @@ teardown() {
|
||||
[[ "$output" == *"GITEA_API_URL"* ]]
|
||||
}
|
||||
|
||||
@test "missing PAGES_HOST → exit 1" {
|
||||
unset PAGES_HOST
|
||||
@test "missing GIT_PAGES_URL → exit 1" {
|
||||
unset GIT_PAGES_URL
|
||||
run bash scripts/publish-git-pages.sh "unit-tests"
|
||||
[ "$status" -eq 1 ]
|
||||
[[ "$output" == *"PAGES_HOST"* ]]
|
||||
}
|
||||
|
||||
@test "missing GIT_PAGES_PUBLISH_URL → exit 1" {
|
||||
unset GIT_PAGES_PUBLISH_URL
|
||||
run bash scripts/publish-git-pages.sh "unit-tests"
|
||||
[ "$status" -eq 1 ]
|
||||
[[ "$output" == *"GIT_PAGES_PUBLISH_URL"* ]]
|
||||
[[ "$output" == *"GIT_PAGES_URL"* ]]
|
||||
}
|
||||
|
||||
@test "missing GIT_PAGES_PUBLISH_TOKEN → exit 1" {
|
||||
@@ -73,7 +65,7 @@ teardown() {
|
||||
mock_start
|
||||
run bash scripts/publish-git-pages.sh "unit-tests"
|
||||
[ "$status" -eq 0 ]
|
||||
[[ "$output" == "https://reports.example.com/test-owner/test-repo/reports/abc123de" ]]
|
||||
[[ "$output" == "http://localhost:18080/test-owner/test-repo/reports/abc123de" ]]
|
||||
}
|
||||
|
||||
@test "publish with suite subpath" {
|
||||
@@ -85,7 +77,7 @@ teardown() {
|
||||
mock_start
|
||||
run bash scripts/publish-git-pages.sh "sub/suite"
|
||||
[ "$status" -eq 0 ]
|
||||
[[ "$output" == "https://reports.example.com/test-owner/test-repo/reports/abc123de" ]]
|
||||
[[ "$output" == "http://localhost:18080/test-owner/test-repo/reports/abc123de" ]]
|
||||
}
|
||||
|
||||
@test "git-pages returns HTTP 500 → exit 1" {
|
||||
|
||||
+4
-12
@@ -3,8 +3,7 @@
|
||||
setup() {
|
||||
export GITEA_API_URL="http://localhost:18080"
|
||||
export GITEA_TOKEN="test-token-abc"
|
||||
export PAGES_HOST="reports.example.com"
|
||||
export GIT_PAGES_PUBLISH_URL="http://localhost:18080/"
|
||||
export GIT_PAGES_URL="http://localhost:18080"
|
||||
export GIT_PAGES_PUBLISH_TOKEN="publish-token-abc"
|
||||
export GITHUB_REPOSITORY="test-owner/test-repo"
|
||||
export GITHUB_SHA="abc123def456789012345678901234567890abcd"
|
||||
@@ -30,18 +29,11 @@ setup() {
|
||||
[[ "$output" == *"GITEA_TOKEN"* ]]
|
||||
}
|
||||
|
||||
@test "missing PAGES_HOST → exit 1" {
|
||||
unset PAGES_HOST
|
||||
@test "missing GIT_PAGES_URL → exit 1" {
|
||||
unset GIT_PAGES_URL
|
||||
run bash scripts/publish.sh "unit-tests"
|
||||
[ "$status" -eq 1 ]
|
||||
[[ "$output" == *"PAGES_HOST"* ]]
|
||||
}
|
||||
|
||||
@test "missing GIT_PAGES_PUBLISH_URL → exit 1" {
|
||||
unset GIT_PAGES_PUBLISH_URL
|
||||
run bash scripts/publish.sh "unit-tests"
|
||||
[ "$status" -eq 1 ]
|
||||
[[ "$output" == *"GIT_PAGES_PUBLISH_URL"* ]]
|
||||
[[ "$output" == *"GIT_PAGES_URL"* ]]
|
||||
}
|
||||
|
||||
@test "missing GIT_PAGES_PUBLISH_TOKEN → exit 1" {
|
||||
|
||||
@@ -4,7 +4,7 @@ setup() {
|
||||
source tests/helpers/mock-api.sh
|
||||
export GITEA_API_URL="http://localhost:18080"
|
||||
export GITEA_TOKEN="test-token-abc123"
|
||||
export PAGES_HOST="reports.example.com"
|
||||
export GIT_PAGES_URL="https://reports.example.com"
|
||||
export GITHUB_REPOSITORY="test-owner/test-repo"
|
||||
export GITHUB_SHA="abc123def456789012345678901234567890abcd"
|
||||
export GITHUB_RUN_ID="42"
|
||||
|
||||
Reference in New Issue
Block a user