name: Wyrocznia domów — nocny przemiał # DLACZEGO TU, A NIE JAKO JOB W KLASTRZE # Pierwotny plan zakładał CronJob w k3s, bo „duży przemiał jest kosztowny". # Pomiar tego nie potwierdził: 500 000 przypadków × 13 systemów = 70 mln porównań # w 64 sekundy, skalowanie liniowe. Osobny obraz w rejestrze (który już raz zapchał # dysk hosta), manifest, CronJob i kopia harnessu poza repo byłyby infrastrukturą # do problemu, którego nie ma — a każda kopia harnessu poza repo to ryzyko cichego # rozjazdu z kodem, który ma testować. # # Zestaw brzegowy blokuje KAŻDY build (patrz tests.yml). Tutaj chodzi o co innego: # duża losowa próbka z INNYM ZIARNEM co noc, żeby z czasem przeczesać dziedzinę # gęściej, niż zrobi to pojedynczy przebieg. on: schedule: - cron: '17 2 * * *' # 02:17 — poza godzinami budowania workflow_dispatch: inputs: count: description: 'Liczba przypadków' default: '500000' seed: description: 'Ziarno (puste = z daty)' default: '' jobs: sweep: name: Przemiał losowy (13 systemów) runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Obraz wyroczni (silnik B + nasza logika + harness) run: | docker build -t astrololo/engine-swisseph:sweep services/engine-swisseph # Pliki WBUDOWANE, nie montowane: job Gitea Actions sam działa w kontenerze, # więc `-v $PWD/...` rozwiązałoby się na HOŚCIE (docker cicho tworzy pusty # katalog i skrypt „znika"). Kontekst builda jest strumieniowany do demona. docker build -t astrololo/oracle:sweep -f - . <<'DOCKERFILE' FROM astrololo/engine-swisseph:sweep COPY services/logic /logic COPY tests/oracle /oracle ENV LOGIC_PATH=/logic DOCKERFILE - name: Przemiał run: | COUNT="${{ inputs.count }}"; COUNT="${COUNT:-500000}" SEED="${{ inputs.seed }}"; SEED="${SEED:-$(date -u +%Y%m%d)}" echo "count=$COUNT seed=$SEED" # Kod wyjścia 1 przy przekroczeniu tolerancji ALBO niezgodności dziedziny, # więc job czerwieni się sam — bez parsowania tekstu raportu. docker run --rm astrololo/oracle:sweep \ python /oracle/run.py --mode sweep --count "$COUNT" --seed "$SEED" # Runner miał już incydent „no space left on device" — sprzątamy zawsze. - name: Usuń obrazy pomocnicze if: always() run: docker rmi -f astrololo/oracle:sweep astrololo/engine-swisseph:sweep 2>/dev/null || true