From 2b94742df426ed7e6856ae99c230676125d7d74c Mon Sep 17 00:00:00 2001 From: Evgeny Demchenko Date: Tue, 19 May 2026 17:31:33 +0100 Subject: [PATCH] =?UTF-8?q?ci:=20retry=20+=20explicit=20Node=2020=20versio?= =?UTF-8?q?n=20check=20=D0=B2=20bootstrap?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Symptom (run #1826 fail на u4-runner): Bootstrap step молча установил Node 12 (Ubuntu default) вместо Node 20 из NodeSource → actions/checkout@v4 не парсится (ES2022 static blocks). Cause: curl ... setup_20.x на slow network (u4 через VPN) timeout/fail silently, apt install fallback на default ubuntu nodejs (Node 12). Без error. Fix: - curl --retry 3 --retry-delay 5 --connect-timeout 30 - retry-loop на NodeSource setup (3 попытки) - явная verification major version >= 18 после install, fail с exit 1 если установился Node < 18 Применяется к обоим jobs (cmake-build и filter-build). Связано: PR #4 (v0.2), run #1826 fail. --- .gitea/workflows/build.yml | 44 ++++++++++++++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 4 deletions(-) diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index cfabd1a..e868875 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -25,12 +25,30 @@ jobs: # Ставим Node 20 из NodeSource repo. - name: Bootstrap Node 20 + git (для actions/checkout) run: | + set -e export DEBIAN_FRONTEND=noninteractive apt-get update apt-get install -y --no-install-recommends curl git ca-certificates gnupg - curl -fsSL https://deb.nodesource.com/setup_20.x | bash - + # NodeSource setup может молча упасть на slow networks (особенно через VPN + # на u4-runner); retry + явная verification что Node >= 18 после install. + for i in 1 2 3; do + if curl -fsSL --retry 3 --retry-delay 5 --connect-timeout 30 \ + https://deb.nodesource.com/setup_20.x | bash -; then + break + fi + echo "NodeSource setup attempt $i failed, retrying..." + sleep 10 + done apt-get install -y --no-install-recommends nodejs - node --version + NODE_VER=$(node --version) + echo "node: $NODE_VER" + # actions/checkout@v4 требует Node 20+ (ES2022 static blocks). + # Если NodeSource setup упал и установился Ubuntu's Node 12 — фейлим явно. + NODE_MAJOR=$(echo "$NODE_VER" | sed -E 's/^v([0-9]+).*/\1/') + if [ "$NODE_MAJOR" -lt 18 ]; then + echo "ERROR: Node $NODE_VER too old, NodeSource setup likely failed" >&2 + exit 1 + fi - name: Install build deps run: | @@ -80,12 +98,30 @@ jobs: steps: - name: Bootstrap Node 20 + git (для actions/checkout) run: | + set -e export DEBIAN_FRONTEND=noninteractive apt-get update apt-get install -y --no-install-recommends curl git ca-certificates gnupg - curl -fsSL https://deb.nodesource.com/setup_20.x | bash - + # NodeSource setup может молча упасть на slow networks (особенно через VPN + # на u4-runner); retry + явная verification что Node >= 18 после install. + for i in 1 2 3; do + if curl -fsSL --retry 3 --retry-delay 5 --connect-timeout 30 \ + https://deb.nodesource.com/setup_20.x | bash -; then + break + fi + echo "NodeSource setup attempt $i failed, retrying..." + sleep 10 + done apt-get install -y --no-install-recommends nodejs - node --version + NODE_VER=$(node --version) + echo "node: $NODE_VER" + # actions/checkout@v4 требует Node 20+ (ES2022 static blocks). + # Если NodeSource setup упал и установился Ubuntu's Node 12 — фейлим явно. + NODE_MAJOR=$(echo "$NODE_VER" | sed -E 's/^v([0-9]+).*/\1/') + if [ "$NODE_MAJOR" -lt 18 ]; then + echo "ERROR: Node $NODE_VER too old, NodeSource setup likely failed" >&2 + exit 1 + fi - name: Install build deps run: |