diff --git a/scripts/docker/container-entry.sh b/scripts/docker/container-entry.sh index 936969e..9f1b493 100644 --- a/scripts/docker/container-entry.sh +++ b/scripts/docker/container-entry.sh @@ -3,11 +3,33 @@ set -euo pipefail cd /work +# npm 网络增强:默认使用官方 registry,可通过 NPM_REGISTRY 覆盖;增加超时与重试,减少 ECONNRESET 失败概率。 +npm config set registry "${NPM_REGISTRY:-https://registry.npmjs.org/}" +npm config set fetch-retries 5 +npm config set fetch-retry-factor 2 +npm config set fetch-retry-mintimeout 20000 +npm config set fetch-retry-maxtimeout 120000 +npm config set fetch-timeout 300000 + for d in call-client broadcast-client; do if [[ ! -f "$d/package.json" ]]; then echo "错误: 缺少 /work/$d/package.json" >&2 exit 1 fi - (cd "$d" && npm ci) + ( + cd "$d" + # npm ci 网络偶发抖动时最多重试 3 次 + for i in 1 2 3; do + if npm ci; then + break + fi + if [[ "$i" -eq 3 ]]; then + echo "错误: $d npm ci 连续 3 次失败" >&2 + exit 1 + fi + echo "警告: $d npm ci 失败,10 秒后重试($i/3)..." >&2 + sleep 10 + done + ) done exec bash /work/scripts/build-linux-deb-all.sh "$@" diff --git a/scripts/docker/install-build-deps.sh b/scripts/docker/install-build-deps.sh index 0836775..a179366 100644 --- a/scripts/docker/install-build-deps.sh +++ b/scripts/docker/install-build-deps.sh @@ -63,8 +63,15 @@ if ! apt-get install -y --no-install-recommends \ libssl-dev:arm64 libayatana-appindicator3-dev:arm64 librsvg2-dev:arm64 fi -# 为避免 NodeSource 在 multiarch 场景触发 python3 依赖解算冲突,直接使用 Ubuntu 官方 nodejs/npm。 -apt-get install -y --no-install-recommends nodejs:amd64 npm:amd64 +# Node.js 22(不走 NodeSource apt,避免 multiarch 下 python 依赖冲突) +NODE_VERSION="v22.16.0" +curl -fsSL "https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-linux-x64.tar.xz" -o /tmp/node.tar.xz +tar -xJf /tmp/node.tar.xz -C /opt +ln -sfn "/opt/node-${NODE_VERSION}-linux-x64" /opt/node +ln -sf /opt/node/bin/node /usr/local/bin/node +ln -sf /opt/node/bin/npm /usr/local/bin/npm +ln -sf /opt/node/bin/npx /usr/local/bin/npx +rm -f /tmp/node.tar.xz export RUSTUP_HOME=/opt/rustup export CARGO_HOME=/opt/cargo diff --git a/scripts/docker/run-build.sh b/scripts/docker/run-build.sh index a74adf8..c2f2042 100644 --- a/scripts/docker/run-build.sh +++ b/scripts/docker/run-build.sh @@ -18,5 +18,6 @@ docker run --rm \ -w /work \ -e RUSTUP_HOME=/opt/rustup \ -e CARGO_HOME=/opt/cargo \ + -e NPM_REGISTRY="${NPM_REGISTRY:-https://registry.npmjs.org/}" \ "$IMAGE_TAG" \ bash /work/scripts/docker/container-entry.sh "$@"