Fix/ci reports fail param (#24)
CI Main / Load example-gitea-env.conf to pipeline env (push) Successful in 23s
CI Main / Check existing artifact (push) Successful in 14s
CI Main / Cucumber tests (push) Successful in 1m11s
unit-tests Bats test report
CI Main / Bats tests (push) Successful in 1m25s
ci-docker-build-push Docker build & push 0.2.11 OK
CI Main / Report Summary (push) Successful in 7s
CI Main / Move provider version tag (push) Successful in 14s
acc-tests Cucumber test report
CI Main / Build & Push Docker (push) Successful in 32s
CI Main / Load example-gitea-env.conf to pipeline env (push) Successful in 23s
CI Main / Check existing artifact (push) Successful in 14s
CI Main / Cucumber tests (push) Successful in 1m11s
unit-tests Bats test report
CI Main / Bats tests (push) Successful in 1m25s
ci-docker-build-push Docker build & push 0.2.11 OK
CI Main / Report Summary (push) Successful in 7s
CI Main / Move provider version tag (push) Successful in 14s
acc-tests Cucumber test report
CI Main / Build & Push Docker (push) Successful in 32s
Co-authored-by: moilanik <niko.moilanen@tietoevry.com> Reviewed-on: #24
This commit was merged in pull request #24.
This commit is contained in:
@@ -102,9 +102,35 @@ ja exit-koodi välittyy natiivisti. Ylimääräistä `EXIT=$?` + `echo >> GITHUB
|
||||
`set -e` ei pelasta pipe-tilanteessa — `|` syö exit-koodin kuten ennenkin. Redirectillä exit-koodi
|
||||
välittyy luonnollisesti.
|
||||
|
||||
**Yksi asia per step:** Älä koskaan niputa useaa post-process-komentoa samaan `run:`-blockiin.
|
||||
`bash -e` pysäyttää koko stepin jos yksi komento epäonnistuu — seuraavat jäävät ajamatta.
|
||||
Käytä erillisiä steppejä `if: always()`:lla, jotta jokainen vaihe ajetaan itsenäisesti:
|
||||
**Yksi asia per step:** Älä koskaan niputa useaa komentoa samaan `run:`-blockiin — oli kyse
|
||||
sitten post-processista tai testi- / tarkistusvaiheista. `bash -e` pysäyttää koko stepin
|
||||
ensimmäisellä failaavalla komennolla, ja loput jäävät ajamatta.
|
||||
|
||||
```yaml
|
||||
# VÄÄRIN — helm template fail → kubeconform jää ajamatta, report jää tekemättä
|
||||
- name: Run tests
|
||||
run: |
|
||||
helm template ... > /tmp/manifests.yaml
|
||||
kubeconform ... > results.txt 2>&1
|
||||
|
||||
# OIKEIN — erilliset stepit
|
||||
- name: Helm template
|
||||
run: helm template platform-helm/ -f values.yaml > /tmp/manifests.yaml 2>&1
|
||||
|
||||
- name: Kubeconform
|
||||
if: success()
|
||||
run: |
|
||||
mkdir -p reports/kubeconform
|
||||
kubeconform ... > reports/kubeconform/results.txt 2>&1
|
||||
|
||||
- name: Report
|
||||
if: always()
|
||||
run: bash .ci/scripts/ci-report.sh "Helm kubeconform" helm-test kubeconform ${{ job.status }}
|
||||
```
|
||||
|
||||
Sama pätee post-process-steppeihin. Älä koskaan niputa useaa post-process-komentoa
|
||||
samaan `run:`-blockiin. Käytä erillisiä steppejä `if: always()`:lla, jotta jokainen
|
||||
vaihe ajetaan itsenäisesti:
|
||||
|
||||
```yaml
|
||||
# VÄÄRIN — jos coverage epäonnistuu, report jää generoimatta
|
||||
@@ -180,9 +206,30 @@ jobs:
|
||||
|
||||
- name: Report
|
||||
if: always()
|
||||
run: bash .ci/scripts/ci-report.sh "<kuvaus>" <context> <suite>
|
||||
run: bash .ci/scripts/ci-report.sh "<kuvaus>" <context> <suite> ${{ job.status }}
|
||||
```
|
||||
|
||||
**Huomio `actions/checkout@v4`:stä:** `container:`-direktiivillä kaikki stepit
|
||||
ajetaan kontin *sisällä* — myös `actions/checkout@v4`. Se on JavaScript-action
|
||||
joka vaatii sekä `nodejs` että `git`. Ilman kumpaa tahansa checkout feilaa
|
||||
`exit 127`.
|
||||
|
||||
```dockerfile
|
||||
# Varmista että kontissa on nodejs + git
|
||||
RUN apk add --no-cache nodejs git
|
||||
```
|
||||
|
||||
**Tarkista siis aina** että CI-kontin Dockerfilessä on sekä `nodejs` että `git`
|
||||
asennettuna. Sama pätee mihin tahansa konttiin jota käytetään `container:`-direktiivillä.
|
||||
|
||||
**Usean runnerin cache-ongelma:** Jos eri kerroilla käynnistyy eri runnereita,
|
||||
niillä voi olla eri versio `latest`-imagen digesteistä. Tämä on `latest`-tagin
|
||||
tunnettu ongelma. Ratkaisuja:
|
||||
- Rebuildaa kontti ja aja `docker pull <image>` manuaalisesti kaikilla
|
||||
runnereilla
|
||||
- Käytä versioitua tagia (`v2`, `v3`, ...) ja päivitä workflow'n default
|
||||
buildauksen jälkeen
|
||||
|
||||
Jos testi tuottaa raportteja suoraan ilman jälkikäsittelyä, Post-process-steppiä ei tarvita.
|
||||
Jos jälkikäsittely on tarpeen (coverage-siirto, HTML-generointi raa'asta outputista),
|
||||
se tehdään omassa stepissä `if: always()` — katso tarkemmin [Raporttitasot](#5-raporttitasot).
|
||||
@@ -209,7 +256,7 @@ Kun testi tuottaa raportit suoraan (kuten `pytest --html` tai `cucumber-js --for
|
||||
|
||||
- name: Report
|
||||
if: always()
|
||||
run: bash .ci/scripts/ci-report.sh "<kuvaus>" <context> <suite>
|
||||
run: bash .ci/scripts/ci-report.sh "<kuvaus>" <context> <suite> ${{ job.status }}
|
||||
```
|
||||
|
||||
### Taso 2: Jälkikäsittely tarvitaan
|
||||
@@ -235,7 +282,7 @@ omassa stepissään** — älä koskaan niputa useaa post-process-komentoa samaa
|
||||
|
||||
- name: Report
|
||||
if: always()
|
||||
run: bash .ci/scripts/ci-report.sh "<kuvaus>" <context> <suite>
|
||||
run: bash .ci/scripts/ci-report.sh "<kuvaus>" <context> <suite> ${{ job.status }}
|
||||
```
|
||||
|
||||
**Huomio subdir-sisällöstä:** Jos testi tuottaa dataa alihakemistoon (esim.
|
||||
@@ -557,7 +604,7 @@ Gitean Settings → Branches → Add Rule:
|
||||
|
||||
| Skripti | Käyttötarkoitus |
|
||||
|---|---|
|
||||
| `ci-report.sh` | Yhdistetty raportointi: julkaisee git-pagesiin ja asettaa commit-statuksen. Korvaa erilliset `publish-git-pages.sh` + `report-status.sh` -kutsut. Käyttö: `bash .ci/scripts/ci-report.sh "<kuvaus>" <context> <suite>` |
|
||||
| `ci-report.sh` | Yhdistetty raportointi: julkaisee git-pagesiin ja asettaa commit-statuksen. Korvaa erilliset `publish-git-pages.sh` + `report-status.sh` -kutsut. Käyttö: `bash .ci/scripts/ci-report.sh "<kuvaus>" <context> <suite> ${{ job.status }}` |
|
||||
| `report-status.sh` | POSTaa commit-statuksen linkillä (kutsutaan `ci-report.sh`:n sisältä) |
|
||||
| `publish-git-pages.sh` | Julkaisee raporttihakemiston git-pagesiin (kutsutaan `ci-report.sh`:n sisältä) |
|
||||
| `ci-validate.sh` | Validoi `.conf`-tiedoston (kutsutaan `config-provider.yml`:stä) |
|
||||
|
||||
Reference in New Issue
Block a user