diff --git a/.gitea/workflows/example-bats-tests.yml b/.gitea/workflows/example-bats-tests.yml index 8b78bc1..b884e1e 100644 --- a/.gitea/workflows/example-bats-tests.yml +++ b/.gitea/workflows/example-bats-tests.yml @@ -37,11 +37,13 @@ jobs: mkdir -p reports/bats bashcov -- bats tests/ > reports/bats/results.txt 2>&1 - - name: Post-process reports + - name: Post-process coverage if: always() - run: | - bash .ci/.gitea/scripts/bats-coverage.sh reports/bats - bash .ci/.gitea/scripts/bats-report.sh reports/bats + run: bash .ci/.gitea/scripts/bats-coverage.sh reports/bats + + - name: Post-process test report + if: always() + run: bash .ci/.gitea/scripts/bats-report.sh reports/bats - name: Report if: always() diff --git a/skills/consumer-pipelines/SKILL.md b/skills/consumer-pipelines/SKILL.md index 732b99c..385bc7d 100644 --- a/skills/consumer-pipelines/SKILL.md +++ b/skills/consumer-pipelines/SKILL.md @@ -102,6 +102,27 @@ 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: + +```yaml +# VÄÄRIN — jos coverage epäonnistuu, report jää generoimatta +- name: Post-process reports + run: | + bash .ci/.gitea/scripts/bats-coverage.sh reports/bats + bash .ci/.gitea/scripts/bats-report.sh reports/bats + +# OIKEIN — erilliset stepit if: always() +- name: Post-process coverage + if: always() + run: bash .ci/.gitea/scripts/bats-coverage.sh reports/bats + +- name: Post-process test report + if: always() + run: bash .ci/.gitea/scripts/bats-report.sh reports/bats +``` + ## 4. Konttipolitiikka 1. **Julkiset registry-kontit kiinteällä versiolla** — `alpine/helm:3.19.0`, `node:22`, `maven:3.9-eclipse-temurin-21`. @@ -182,7 +203,8 @@ Kun testi tuottaa raportit suoraan (kuten `pytest --html` tai `cucumber-js --for ### Taso 2: Jälkikäsittely tarvitaan Kun testi tuottaa raakadataa (stdout, coverage-tiedostot) joka pitää muuntaa tai siirtää -`reports//`-hakemistoon, käytetään Post-process-steppiä: +`reports//`-hakemistoon, käytetään Post-process-steppejä. **Jokainen operaatio +omassa stepissään** — älä koskaan niputa useaa post-process-komentoa samaan `run:`-blockiin: ```yaml - name: Run tests @@ -191,17 +213,24 @@ Kun testi tuottaa raakadataa (stdout, coverage-tiedostot) joka pitää muuntaa t mkdir -p "reports/" > "reports//results.txt" 2>&1 -- name: Post-process reports +- name: Post-process coverage if: always() - run: | - - + run: + +- name: Post-process test report + if: always() + run: - name: Report if: always() run: bash .ci/scripts/ci-report.sh "" ``` +**Miksi:** Gitea Actions käyttää `bash -e`-oletusta. Jos yksi post-process-komento +epäonnistuu (esim. `set -euo pipefail`-skripti), koko stepi pysähtyy eivätkä seuraavat +komennot käynnisty — raportti jää julkaisematta. Erilliset stepit `if: always()` takaavat +että jokainen post-process-vaihe ajetaan itsenäisesti. + **Malli:** `example-bats-tests.yml`. ### Monta raportoitavaa tiedostoa