Files
gitea-ci-library/docs/adr/0007-status-reporting-pattern.md
T
niko f7b2353eb9
CI Main / Load example-gitea-env.conf to pipeline env (push) Successful in 25s
CI Main / Check existing artifact (push) Successful in 22s
unit-tests Link to Bats reports
CI Main / Bats tests (push) Successful in 1m47s
acc-tests Link to Cucumber reports
CI Main / Cucumber tests (push) Successful in 1m4s
ci-docker-build-push Docker build & push 0.2.0 OK
CI Main / Build & Push Docker (push) Successful in 35s
CI Main / Report Summary (push) Successful in 4s
Feature/docker kuntoon (#11)
Co-authored-by: moilanik <niko.moilanen@tietoevry.com>
Reviewed-on: #11
2026-06-15 17:22:04 +03:00

2.7 KiB

7. Statusraportoinnin pattern

Päätös

Gitea Actionsin natiivi job-status on ensisijainen. Commit-status API:a (report-status.sh) käytetään vain kun työvaihe tuottaa ulkoisen linkin (testiraportti, Docker registry), jota natiivistaatus ei tue.

Tool-jobit (validate, check-version, tag-commit)

Ei API-kutsuja. Luotetaan Gitean omaan job-statukseen.

- uses: actions/checkout@v4

- name: Do work
  run: do-something

Test-jobit (bats, cucumber)

API:a käytetään raporttilinkin upottamiseksi commit-näkymään.

testit → publish (always) → status (always, exit-koodin mukaan)
- name: Run tests
  shell: bash
  run: |
    run-tests
    EXIT=$?
    echo "EXIT=${EXIT}" >> "${GITHUB_ENV}"
    exit ${EXIT}

- name: Publish reports
  if: always()
  run: bash .ci/scripts/publish-git-pages.sh bats

- name: Report status
  if: always()
  shell: bash
  run: |
    if [ "${EXIT}" = "0" ]; then
      bash .ci/scripts/report-status.sh success "Link to Bats reports" unit-tests bats
    else
      bash .ci/scripts/report-status.sh failure "Link to Bats reports" unit-tests bats
    fi

Build & push -jobit (docker-build-push)

API:a käytetään Docker registry -linkin upottamiseksi.

build → push → SUCCESS (registry-linkillä) / FAILURE

Periaatteet

  1. Gitea Actionsin natiivi job-status on ensisijainen — myös PENDING/Running-tila tulee natiivisti. API:a käytetään vain custom-linkin tarpeeseen (ADR 0004).
  2. run-komennon on nostettava virhe ylös — oli kyse tool-callista tai testivirheestä (ADR 0008).
  3. Test-jobit käyttävät if: always() publish- ja status-stepeissä — raportti julkaistaan ja status asetetaan aina, riippumatta testin lopputuloksesta.
  4. Testiraportit julkaistaan myös virhetilanteessa, mikäli ne ovat syntyneet.
  5. Commit-statuksen duplikaatio natiivijob-statuksen kanssa hyväksytään testijobeille — se on ainoa mekanismi upottaa raporttilinkki commit-näkymään.
  6. Tool-jobit eivät käytä API:a lainkaan — ne luottavat Gitean natiiviin job-statukseen.

Tausta

Aiemmin commit-status API:a käytettiin jokaisessa työvaiheessa, myös niissä joilla ei ollut raporttia linkitettäväksi (validate, check-version, tag-commit). Tämä tuotti duplikaatiota: Gitea näytti sekä natiivin CI Main / Validate CI config Successful että API-statuksen ci-validate CI config valid. Kehittäjälle molemmat kertoivat saman asian.

Käytännön pakko kuitenkin pakottaa API:n käyttöön testijobeissa: ilman raporttilinkkiä kukaan ei löydä testituloksia. Gitean natiivi job-status linkittää aina jobin lokiin — ei ulkoiseen raporttiin. Tämä on paras saatavilla oleva kompromissi.