ci: przywróć uruchamianie testów astrodemo i wykrywaj puste kroki
Testy / Testy warstwy logicznej (silnik) (pull_request) Successful in 10m24s
Testy / Testy warstwy prezentacji (dostęp do baz) (pull_request) Successful in 9m29s
Testy / Testy warstwy bazodanowej (ochrona baz) (pull_request) Successful in 9m25s
Testy / Testy astrodemo (pull_request) Successful in 9m25s
Testy / Testy astroklient (pull_request) Successful in 9m25s
Testy / Build obrazu silnika B (swisseph) (pull_request) Successful in 7s
Testy / Kontrola składni wszystkich warstw (pull_request) Successful in 4s
build / build (push) Successful in 8s
Testy / Testy warstwy logicznej (silnik) (push) Successful in 10m20s
Testy / Testy warstwy prezentacji (dostęp do baz) (push) Successful in 9m28s
Testy / Testy warstwy bazodanowej (ochrona baz) (push) Successful in 9m26s
Testy / Testy astrodemo (push) Successful in 9m25s
Testy / Testy astroklient (push) Successful in 9m25s
Testy / Build obrazu silnika B (swisseph) (push) Successful in 6s
Testy / Kontrola składni wszystkich warstw (push) Successful in 4s

Testy astrodemo padały na masterze, choć lokalnie przechodzą — bo w CI nie
uruchamiały się WCALE. Dopisując blok astroklienta rozciąłem blok sąsiada:
krok „Testy (pytest)" astrodemo został z samym `working-directory`, a jego
`env` i `run` przywędrowały do zadania astroklienta.

Skutek podwójny i gorszy, niż wygląda: astrodemo zgłaszało błąd (krok bez
polecenia), a astroklient przechodził Z NIEWŁAŚCIWEGO POWODU — na cudzym `run`.
Zielone CI, które nic nie uruchomiło, jest gorsze od czerwonego, bo nie ma czego
naprawiać.

Krok bez `run` i bez `uses` jest dla Gitei krokiem pustym. Dopisana kontrola
przechodzi wszystkie pliki workflow i przerywa, gdy taki krok się trafi albo
gdy zadanie nie ma kroków w ogóle. Sprawdzona w obie strony: przepuszcza obecny
stan i wykrywa dokładnie to rozcięcie, gdy je odtworzyć.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit was merged in pull request #84.
This commit is contained in:
2026-08-27 15:59:36 +02:00
parent 10970c579f
commit 54b40857d2
+34 -1
View File
@@ -108,6 +108,10 @@ jobs:
# żadna trasa poza dwiema funkcjami.
- name: Testy (pytest)
working-directory: services/astrodemo
env:
PYTHONPATH: .
run: pytest tests -q -rs
astroklient-tests:
name: Testy astroklient
runs-on: ubuntu-latest
@@ -125,7 +129,6 @@ jobs:
# bo tylko on trafia do obrazu.
- name: Testy (pytest)
working-directory: services/astroklient
env:
PYTHONPATH: .
run: pytest tests -q -rs
@@ -258,3 +261,33 @@ jobs:
# silnika swisseph, który nie wchodzi do produktu).
- name: py_compile
run: python -m compileall -q services
# Krok bez `run` i bez `uses` jest dla Gitei krokiem PUSTYM: zadanie mija
# go i kończy się powodzeniem, nie uruchomiwszy niczego. Tak właśnie
# zniknęły na jeden commit testy astrodemo — blok został rozcięty przy
# dopisywaniu sąsiedniego, a jego `run` przywędrował do cudzego zadania,
# które przez to przechodziło z niewłaściwego powodu.
#
# Zielone CI, które nic nie uruchomiło, jest gorsze od czerwonego.
- name: Kontrola kroków w workflow
run: |
python - <<'KONTROLA'
import pathlib, sys, yaml
grzechy = []
for f in sorted(pathlib.Path(".gitea/workflows").glob("*.y*ml")):
d = yaml.safe_load(f.read_text(encoding="utf-8")) or {}
for nazwa, job in (d.get("jobs") or {}).items():
kroki = job.get("steps") or []
if not kroki:
grzechy.append(f"{f.name}: zadanie '{nazwa}' nie ma kroków")
for k in kroki:
if "run" not in k and "uses" not in k:
grzechy.append(
f"{f.name}: '{nazwa}' → krok "
f"'{k.get('name','(bez nazwy)')}' nie ma ani run, ani uses")
if grzechy:
print("PUSTE KROKI — zadanie przeszłoby nic nie robiąc:")
print("\n".join(" " + g for g in grzechy))
sys.exit(1)
print("Wszystkie kroki mają co uruchomić.")
KONTROLA