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 / 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:
@@ -108,6 +108,10 @@ jobs:
|
|||||||
# żadna trasa poza dwiema funkcjami.
|
# żadna trasa poza dwiema funkcjami.
|
||||||
- name: Testy (pytest)
|
- name: Testy (pytest)
|
||||||
working-directory: services/astrodemo
|
working-directory: services/astrodemo
|
||||||
|
env:
|
||||||
|
PYTHONPATH: .
|
||||||
|
run: pytest tests -q -rs
|
||||||
|
|
||||||
astroklient-tests:
|
astroklient-tests:
|
||||||
name: Testy astroklient
|
name: Testy astroklient
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -125,7 +129,6 @@ jobs:
|
|||||||
# bo tylko on trafia do obrazu.
|
# bo tylko on trafia do obrazu.
|
||||||
- name: Testy (pytest)
|
- name: Testy (pytest)
|
||||||
working-directory: services/astroklient
|
working-directory: services/astroklient
|
||||||
|
|
||||||
env:
|
env:
|
||||||
PYTHONPATH: .
|
PYTHONPATH: .
|
||||||
run: pytest tests -q -rs
|
run: pytest tests -q -rs
|
||||||
@@ -258,3 +261,33 @@ jobs:
|
|||||||
# silnika swisseph, który nie wchodzi do produktu).
|
# silnika swisseph, który nie wchodzi do produktu).
|
||||||
- name: py_compile
|
- name: py_compile
|
||||||
run: python -m compileall -q services
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user