ci: persist mutation ledger between rerun attempts (#499)

Release: v1.73.0-beta.7
Issue: #499
User-Visible: no
This commit is contained in:
Sergey Matyunin
2026-09-09 05:30:00 +03:00
parent 7648ea79ce
commit 244efed878
2 changed files with 17 additions and 11 deletions
+12 -7
View File
@@ -511,15 +511,19 @@ jobs:
run: npx playwright install --with-deps chromium
# Журнал пойманных свидетелей (#481). Отменённый или упавший по таймауту
# прогон не пропадает: журнал пишется после каждого пойманного мутанта и
# сохраняется при любом исходе шага, а следующий пуш начинает с того
# места, где предыдущий остановился. Мутант с тем же отпечатком входов
# сохраняется при любом исходе шага, а следующая попытка или пуш начинает
# с того места, где предыдущий остановился. Мутант с тем же отпечатком входов
# (файлы патча и гарда, без строки версии) повторно не гоняется.
- name: Журнал свидетелей (последний по шарду)
uses: actions/cache/restore@v6
with:
path: artifacts/mutation-ledger
key: mutation-ledger-${{ matrix.shard }}-${{ github.run_id }}
restore-keys: mutation-ledger-${{ matrix.shard }}-
# Cache immutable: rerun с тем же run_id обязан получить новый key,
# иначе post-save не сможет записать прогресс поверх первой попытки.
key: mutation-ledger-${{ matrix.shard }}-${{ github.run_id }}-${{ github.run_attempt }}
restore-keys: |
mutation-ledger-${{ matrix.shard }}-${{ github.run_id }}-
mutation-ledger-${{ matrix.shard }}-
- name: Затронутые мутанты ловятся
env:
EVENT_NAME: ${{ github.event_name }}
@@ -550,14 +554,15 @@ jobs:
--ledger="artifacts/mutation-ledger/shard-$SHARD.json"
# Сохраняется всегда: и после красного шага (пойманные до отказа уже
# записаны), и при отмене прогона — post-шаг cache/save исполняется,
# пока job не убита целиком. Ключ уникален на прогон: cache не
# перезаписывает существующий ключ, а restore-keys берёт самый новый.
# пока job не убита целиком. Ключ уникален на попытку: cache не
# перезаписывает существующий ключ, а restore-keys берёт предыдущую
# попытку этого run либо самый новый журнал шарда.
- name: Сохранить журнал свидетелей
if: always()
uses: actions/cache/save@v6
with:
path: artifacts/mutation-ledger
key: mutation-ledger-${{ matrix.shard }}-${{ github.run_id }}
key: mutation-ledger-${{ matrix.shard }}-${{ github.run_id }}-${{ github.run_attempt }}
frontend:
name: "Фронтенд: типы, юниты, мутанты, синхрон бандла"