masteriin vietäväksi
This commit is contained in:
@@ -7,14 +7,14 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
feature:
|
feature:
|
||||||
if: github.ref != 'refs/heads/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
|
secrets: inherit
|
||||||
with:
|
with:
|
||||||
bats-image: bats/bats:latest
|
bats-image: bats/bats:latest
|
||||||
|
|
||||||
main:
|
main:
|
||||||
if: github.ref == 'refs/heads/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
|
secrets: inherit
|
||||||
with:
|
with:
|
||||||
bats-image: bats/bats:latest
|
bats-image: bats/bats:latest
|
||||||
|
|||||||
@@ -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}"
|
|
||||||
'
|
|
||||||
@@ -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
|
||||||
@@ -1,5 +1,3 @@
|
|||||||
> **⚠️ STATUS: ALERT DRAFT** — Ei ole validoitu. Voi sisältää virheellisiä tai puutteellisia käytäntöjä.
|
|
||||||
|
|
||||||
# CI Pipeline Practices
|
# CI Pipeline Practices
|
||||||
|
|
||||||
## 1. Error Taxonomy
|
## 1. Error Taxonomy
|
||||||
@@ -32,7 +30,24 @@ Kolme toimivaa vaihtoehtoa:
|
|||||||
- `docker volume create -- docker run -v volume:/data -- docker run -v volume:/data`
|
- `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`
|
- `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
|
- Ei luottamusta runnerin esiasennettuihin työkaluihin
|
||||||
- `apk add`, `npm install`, `apt-get install` — kaikki pipelinesta
|
- `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`)
|
- Node-version päivitettävä jos paketti vaatii uudempaa (`node:20` → `node:22`)
|
||||||
- Jos kontin entrypoint on `sh` (Alpine ash), käytä `--entrypoint bash`
|
- Jos kontin entrypoint on `sh` (Alpine ash), käytä `--entrypoint bash`
|
||||||
|
|
||||||
## 5. Rakenne
|
## 6. Rakenne
|
||||||
|
|
||||||
- Rinnakkaiset jobit (bats + cucumber) — tuloksia saa heti kun valmistuu
|
- Rinnakkaiset jobit (bats + cucumber) — tuloksia saa heti kun valmistuu
|
||||||
- Jokainen testisetti omassa jobissaan
|
- Jokainen testisetti omassa jobissaan
|
||||||
|
|||||||
Reference in New Issue
Block a user