mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
Диспатч уходит после того, как ссылка ветки доехала
`workflow_dispatch` в API принимает только ref: SHA туда передать нельзя, имя ветки резолвится на стороне GitHub в момент запуска. Конвейер перед этим сам переписывает ветку ребейзом — и 12.09 на #536 диспатч, отправленный через три секунды после force-push, встал на ДОпушевый SHA. Гейт искал прогон строго на SHA материала, не нашёл и вернул задачу автору со словами «материал сменился». Чинить было нечего: дерево задачи не менялось ни на байт, материал сдвинул сам конвейер. Две меры, у каждой своя роль. Шаг ребейза не заканчивается, пока REST не отдаст новую вершину — именно REST, потому что через него же идёт диспатч. Минута ожидания, после чего отказ, а не молчание: диспатч на устаревший SHA стоит трёх минут гейта и потерянного захода. Гейт, не дождавшись прогона на материале и увидев на ветке диспатч на другом SHA, сначала пробует запустить ещё раз. Своя гонка этим закрывается, чужой коммит переживает и вторую попытку, а формулировка отказа больше не называет сменой материала то, что ею не является. Issue: #539 User-Visible: no
This commit is contained in:
@@ -7710,6 +7710,31 @@ const MUTANT_DEFINITIONS = [
|
||||
replace: '',
|
||||
}],
|
||||
},
|
||||
{
|
||||
id: 'gate-blames-the-author-for-its-own-stale-dispatch',
|
||||
guard: 'node --test test/validate-gate.test.mjs',
|
||||
because: '#539: `workflow_dispatch` принимает только ref, и конвейер сам переписывает '
|
||||
+ 'ветку ребейзом за секунды до запуска. Без повторной попытки собственная гонка '
|
||||
+ 'выглядит как «материал сменился», и задача уезжает автору, которому чинить нечего — '
|
||||
+ 'ровно это случилось с #536 12.09',
|
||||
patches: [{
|
||||
file: 'scripts/validate-gate.mjs',
|
||||
find: ' if (elsewhere && attempts < DISPATCH_ATTEMPTS) {',
|
||||
replace: ' if (false && elsewhere && attempts < DISPATCH_ATTEMPTS) {',
|
||||
}],
|
||||
},
|
||||
{
|
||||
id: 'rebase-dispatches-before-the-ref-settles',
|
||||
guard: 'node --test test/review-doc-guard.test.mjs',
|
||||
because: '#539: ссылка на стороне GitHub доезжает не мгновенно, а диспатч идёт по имени '
|
||||
+ 'ветки. Без ожидания шаг возвращается сразу после push, и запуск встаёт на вершину, '
|
||||
+ 'которой на ветке уже нет',
|
||||
patches: [{
|
||||
file: '.github/workflows/process.yml',
|
||||
find: ' if [ "$seen" = "$after" ]; then settled=true; break; fi',
|
||||
replace: ' settled=true; break',
|
||||
}],
|
||||
},
|
||||
{
|
||||
id: 'render-invalidation-unknown-key-ignored',
|
||||
guard: 'node --test test/render-invalidation.test.mjs',
|
||||
|
||||
Reference in New Issue
Block a user