diff --git a/.github/workflows/process.yml b/.github/workflows/process.yml index 3eb81d2a..9d9be65e 100644 --- a/.github/workflows/process.yml +++ b/.github/workflows/process.yml @@ -396,6 +396,7 @@ jobs: # #539: тем же токеном спрашивается REST — через него идёт и диспатч. GH_TOKEN: ${{ secrets.HP_PROCESS_TOKEN }} BRANCH: ${{ steps.branch.outputs.name }} + NUM: ${{ github.event.issue.number }} # rebase, в отличие от commit, не принимает -c user.*: он запускает # свои процессы и требует личность в окружении, иначе падает с # «unable to auto-detect email address». @@ -427,6 +428,11 @@ jobs: printf 'конфликтуют:\n%s\n' "${files:-(git не назвал файлы)}" exit 0 fi + # #635 r2: ребейз мог принести в docs/reviews документы других задач, + # а закоммиченный INDEX.md — снимок каталога — их не знает. Свежесть + # держит тест «индекс свеж» в Validate, поэтому индекс пересобирается + # здесь же, коммитом конвейера (класс C), до фиксации материала. + node scripts/reviews-index.mjs --dir=docs/reviews --commit-if-stale --issue="$NUM" # --force-with-lease с явным ожидаемым значением обязателен: между # fetch и push автор мог запушить коммит, и слепой --force потерял бы # его молча. Расхождение lease — падение прогона, а не предупреждение: @@ -1400,6 +1406,12 @@ jobs: # забрал бы всё, что там окажется, а после reset там не должно быть # ничего постороннего — но полагаться на «не должно» здесь нельзя. git add -- "$doc" 2>/dev/null || true + # #635: индекс ревью пересобирается тем же коммитом, что и документ — + # иначе он устаревает на первом же раунде. Генерируемый файл, класс C. + if [ -f "$doc" ]; then + node scripts/reviews-index.mjs --dir=docs/reviews + git add -- docs/reviews/INDEX.md + fi if git diff --cached --quiet; then # Пустая рабочая копия — ещё не провал: ревьюер иногда коммитит # документ сам, своим app-токеном мимо этого шага (CODE-REVIEW-150-r1,