From 62d544611488536847112f78d3ca9e94fb7edcb1 Mon Sep 17 00:00:00 2001 From: Codex Date: Sat, 12 Sep 2026 13:55:00 +0300 Subject: [PATCH] =?UTF-8?q?ci:=20mirror=20process.yml=20from=20dev=20(#539?= =?UTF-8?q?=20=E2=80=94=20=D0=B4=D0=B8=D1=81=D0=BF=D0=B0=D1=82=D1=87=20?= =?UTF-8?q?=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=20=D1=82=D0=BE=D0=B3=D0=BE,=20?= =?UTF-8?q?=D0=BA=D0=B0=D0=BA=20=D1=81=D1=81=D1=8B=D0=BB=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=B5=D1=85=D0=B0=D0=BB=D0=B0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Для события `issues` GitHub берёт workflow из ветки по умолчанию, поэтому правка конвейера действует только из `main`. Issue: #539 User-Visible: no --- .github/workflows/process.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/.github/workflows/process.yml b/.github/workflows/process.yml index 6d2287c3..a9384849 100644 --- a/.github/workflows/process.yml +++ b/.github/workflows/process.yml @@ -347,6 +347,8 @@ jobs: if: needs.guard.outputs.stage == 'code' && steps.branch.outputs.name != '' env: TOKEN: ${{ secrets.HP_PROCESS_TOKEN }} + # #539: тем же токеном спрашивается REST — через него идёт и диспатч. + GH_TOKEN: ${{ secrets.HP_PROCESS_TOKEN }} BRANCH: ${{ steps.branch.outputs.name }} # rebase, в отличие от commit, не принимает -c user.*: он запускает # свои процессы и требует личность в окружении, иначе падает с @@ -389,6 +391,25 @@ jobs: echo "::error::ветка $BRANCH изменилась во время ребейза — прогон прерван, чтобы не потерять коммит автора" exit 1 fi + # #539: ссылка на стороне GitHub доезжает не мгновенно, а гейт ниже + # просит `workflow_dispatch` ПО ИМЕНИ ВЕТКИ — SHA туда передать + # нельзя. 12.09 на #536 диспатч, отправленный через три секунды после + # этого push, встал на ДОпушевый SHA: гейт не нашёл прогона на + # материале и вернул задачу автору, которому чинить было нечего. + # Поэтому шаг не заканчивается, пока REST не отдаст новую вершину — + # именно REST, потому что через него же идёт и сам диспатч. + after=$(git rev-parse HEAD) + settled=false + for _ in $(seq 1 30); do + seen=$(gh api "repos/${{ github.repository }}/git/ref/heads/$BRANCH" \ + --jq .object.sha 2>/dev/null || true) + if [ "$seen" = "$after" ]; then settled=true; break; fi + sleep 2 + done + if [ "$settled" != "true" ]; then + echo "::error::ссылка $BRANCH за минуту не стала указывать на $after — диспатч встал бы на устаревший SHA" + exit 1 + fi # Локальная ссылка обновляется тоже: шаг слияния берёт origin/$BRANCH, # и без этого он ребейзил бы заново уже приведённое. git fetch -q origin "+refs/heads/$BRANCH:refs/remotes/origin/$BRANCH"