diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index dddf5ed..4310951 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -7,14 +7,14 @@ on: jobs: feature: if: github.ref != 'refs/heads/main' - uses: niko/gitea-ci-library/.gitea/workflows/build-feature.yml@plan/0003-alkaa-käyttämään-itseään-commit-raportti + uses: niko/gitea-ci-library/.gitea/workflows/build-feature.yml@v1 secrets: inherit with: bats-image: bats/bats:latest main: if: github.ref == 'refs/heads/main' - uses: niko/gitea-ci-library/.gitea/workflows/build-feature.yml@plan/0003-alkaa-käyttämään-itseään-commit-raportti + uses: niko/gitea-ci-library/.gitea/workflows/build-feature.yml@v1 secrets: inherit with: bats-image: bats/bats:latest diff --git a/.gitea/workflows/poc-env-scope.yml b/.gitea/workflows/poc-env-scope.yml deleted file mode 100644 index c6b0024..0000000 --- a/.gitea/workflows/poc-env-scope.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: POC — env scope across containers -on: - push: - branches: - - plan/0003-alkaa-käyttämään-itseään-commit-raportti - -env: - PIPELINE_VAR: hello-from-workflow-level - -jobs: - test-env-scope: - runs-on: ubuntu-latest - env: - JOB_VAR: hello-from-job-level - steps: - - name: Step 1 — native shell - run: | - echo "PIPELINE_VAR=${PIPELINE_VAR}" - echo "JOB_VAR=${JOB_VAR}" - echo "PIPELINE_VAR=${PIPELINE_VAR}" >> "${GITHUB_ENV}" - echo "JOB_VAR=${JOB_VAR}" >> "${GITHUB_ENV}" - - - name: Step 2 — docker run alpine, no -e flag - run: | - echo "--- Without -e ---" - docker run --rm alpine:latest sh -c ' - echo "PIPELINE_VAR=${PIPELINE_VAR:-EMPTY}" - echo "JOB_VAR=${JOB_VAR:-EMPTY}" - ' - - - name: Step 3 — docker run alpine, with -e flag - run: | - echo "--- With -e ---" - docker run --rm -e PIPELINE_VAR -e JOB_VAR alpine:latest sh -c ' - echo "PIPELINE_VAR=${PIPELINE_VAR:-EMPTY}" - echo "JOB_VAR=${JOB_VAR:-EMPTY}" - ' - - - name: Step 4 — docker run, vars from GITHUB_ENV - run: | - echo "--- From GITHUB_ENV ---" - docker run --rm -e PIPELINE_VAR -e JOB_VAR alpine:latest sh -c ' - echo "PIPELINE_VAR=${PIPELINE_VAR:-EMPTY}" - echo "JOB_VAR=${JOB_VAR:-EMPTY}" - ' diff --git a/config.yaml b/config.yaml new file mode 100644 index 0000000..56d23f8 --- /dev/null +++ b/config.yaml @@ -0,0 +1,3 @@ +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 diff --git a/docs/ci-pipeline-practices.md b/docs/ci-pipeline-practices.md index 42a01f6..f2e0a78 100644 --- a/docs/ci-pipeline-practices.md +++ b/docs/ci-pipeline-practices.md @@ -1,5 +1,3 @@ -> **⚠️ STATUS: ALERT DRAFT** — Ei ole validoitu. Voi sisältää virheellisiä tai puutteellisia käytäntöjä. - # CI Pipeline Practices ## 1. Error Taxonomy @@ -32,7 +30,24 @@ Kolme toimivaa vaihtoehtoa: - `docker volume create -- docker run -v volume:/data -- docker run -v volume:/data` - `tar c . | docker run --rm -i -v volume:/data alpine tar x -C /data` -## 4. Pipeline Provides All Dependencies +## 4. Env variable scope (validated 2026-06-13) + +`env:` — oli se workflow- tai job-tasolla — toimii vain **natiiveissa shell-stepeissä** ja `docker run -e VAR` -komennoissa. `docker run` ilman `-e`-lippua **ei peri** `env:`-muuttujia. + +Tämä on validioitu POC-ajolla: `tmp/poc-env-scope.yml` + +| Sijainti | Native shell | `docker run` ilman `-e` | `docker run -e VAR` | +|----------|-------------|------------------------|---------------------| +| workflow `env:` | ✅ perii | ❌ tyhjä | ✅ perii | +| job `env:` | ✅ perii | ❌ tyhjä | ✅ perii | +| `GITHUB_ENV` | ✅ perii | ❌ tyhjä | ✅ perii | + +Käytäntö: +- Workflow-tason `env:` sopii arvoille, joita tarvitaan natiivistepeissä (publish, status, reportointi) +- Jos `docker run` tarvitsee env-arvoja, välitä ne eksplisiittisesti `-e VAR`-lipulla +- `GITHUB_ENV` on validi tapa välittää arvoja stepien välille samassa jobissa, mutta ei leviä `docker run`-kontteihin ilman `-e`-lippua + +## 5. Pipeline Provides All Dependencies - Ei luottamusta runnerin esiasennettuihin työkaluihin - `apk add`, `npm install`, `apt-get install` — kaikki pipelinesta @@ -40,7 +55,7 @@ Kolme toimivaa vaihtoehtoa: - Node-version päivitettävä jos paketti vaatii uudempaa (`node:20` → `node:22`) - Jos kontin entrypoint on `sh` (Alpine ash), käytä `--entrypoint bash` -## 5. Rakenne +## 6. Rakenne - Rinnakkaiset jobit (bats + cucumber) — tuloksia saa heti kun valmistuu - Jokainen testisetti omassa jobissaan