mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
ci: prove the range by judgement, not by a green verdict
Правка #388 уронила dev, и виновата подмена предиката. Я взял доказательством `conclusion=success`, то есть оправдательный вердикт. Гейтам диапазона нужен другой факт: судили ли этот коммит вообще. Упавший прогон коммит судил — вердикт вынесен, автор его видел; переоткрывать такой коммит диапазоном не надо. Не судил только отменённый. Цена ошибки была наглядной. Backend на dev красный несколько дней по своей причине (test_ha_import_export), успешных прогонов нет вовсе, поэтому база уезжала на десятки коммитов назад. На83d646c— docs-коммите — гейт «новый код не добавляет any» предъявил 5 чужих находок изe4e1e370и8d431d6dи уронил frontend. Ровно тот сценарий обвинения невиновного, ради которого делался #386, только устроенный мной. Теперь `judgedShas` считает судимыми завершённые прогоны с любым вердиктом, кроме cancelled, а `greenShas` остаётся для классификации (#387): там вопрос другой — доказано ли, что тяжёлые гейты на этом дереве ПРОШЛИ. Два вопроса, два предиката, и путать их дорого. Запрос к API стал `status=completed` — надмножество, нужный предикат применяет скрипт. Issue: #388 User-Visible: no
This commit is contained in:
@@ -94,8 +94,11 @@ jobs:
|
||||
REPO: ${{ github.repository }}
|
||||
FALLBACK: ${{ github.event.before }}
|
||||
run: |
|
||||
# `status=completed`, а не `success`: гейтам диапазона нужен факт
|
||||
# «коммит судили», а не «вердикт был оправдательный». Упавший прогон
|
||||
# коммит судил; отменённый — нет, его отсеивает judgedShas (#388).
|
||||
gh api -X GET "repos/$REPO/actions/workflows/validate.yml/runs" \
|
||||
-f branch=dev -f status=success -F per_page=100 \
|
||||
-f branch=dev -f status=completed -F per_page=100 \
|
||||
> /tmp/validate-runs.json || echo '{}' > /tmp/validate-runs.json
|
||||
node scripts/classify-base.mjs --head="$HEAD_SHA" --mode=range \
|
||||
--fallback="$FALLBACK" --runs=/tmp/validate-runs.json
|
||||
@@ -208,8 +211,10 @@ jobs:
|
||||
git fetch -q origin dev
|
||||
# Недоступность API — не отказ гейта: пустой ответ уводит базу в
|
||||
# сторону БОЛЬШЕГО объёма проверок, а не меньшего.
|
||||
# Один запрос на оба режима: `completed` — надмножество `success`,
|
||||
# а нужный предикат применяет скрипт (#387 — успех, #388 — судимость).
|
||||
gh api -X GET "repos/$REPO/actions/workflows/validate.yml/runs" \
|
||||
-f branch="$BRANCH" -f status=success -F per_page=100 \
|
||||
-f branch="$BRANCH" -f status=completed -F per_page=100 \
|
||||
> /tmp/validate-runs.json || echo '{}' > /tmp/validate-runs.json
|
||||
if [ "$REF" = "refs/heads/dev" ]; then
|
||||
# На dev классифицировать нечего (всё true), но база диапазона
|
||||
|
||||
Reference in New Issue
Block a user