ci: 修复 npm ci EUSAGE @parcel/watcher 缺失并增加 install 兜底
- 锁步: 本地 npm install --legacy-peer-deps 重新同步 package-lock,补齐 @parcel/watcher packages 段 - 兜底: deploy.yml 中 npm ci 全部重试仍失败后,自动降级 npm install --legacy-peer-deps 并写双份缓存 - 诊断: npm ci 失败时附带 node/npm/lockfileVersion 三元组,便于区分版本差与网络问题
This commit is contained in:
@@ -279,13 +279,36 @@ jobs:
|
||||
fi
|
||||
done
|
||||
if [ "${CI_OK}" != "1" ]; then
|
||||
echo "ERROR: npm ci 经过 ${MAX_RETRY} 轮(主站/备用域名交替)仍失败,请检查 Runner 网络是否能访问 ${NPM_REGISTRY_PRIMARY} / ${NPM_REGISTRY_FALLBACK}" >&2
|
||||
echo " 可在 Variables 中覆盖 NPM_REGISTRY_PRIMARY / NPM_REGISTRY_FALLBACK,或在 Runner 宿主机手动配 npm 代理" >&2
|
||||
echo " 快速自检(在 Runner 宿主机执行):node -v && npm -v && npm view vue version --registry=${NPM_REGISTRY_PRIMARY}" >&2
|
||||
exit 1
|
||||
# 兜底:npm ci 只要 lockfile 有任何不同步(比如本地生成 vs CI Node 版本导致的可选依赖差异、
|
||||
# 典型如 @parcel/watcher 在 CI Node 24 上作为可选依赖被拉起但 lock 中缺记录)就会 EUSAGE。
|
||||
# 此时退化为 npm install --legacy-peer-deps(生成与本机一致的 node_modules + 同步 lock),
|
||||
# 并用新 lock 重新算 hash 写缓存,避免下次相同 tree 再走到这里。
|
||||
echo "WARN: npm ci 全部轮次仍失败,尝试降级为 npm install --legacy-peer-deps 兜底(会同步 package-lock.json)"
|
||||
set +e
|
||||
npm install --legacy-peer-deps --no-audit --no-fund
|
||||
FALLBACK_EXIT=$?
|
||||
set -e
|
||||
if [ ${FALLBACK_EXIT} -eq 0 ]; then
|
||||
echo "WARN: fallback npm install SUCCESS(后续建议本地执行 npm install 并提交新的 package-lock.json 以消除这一步)"
|
||||
FALLBACK_LOCK_HASH="$(sha256sum package-lock.json | cut -d' ' -f1)"
|
||||
FALLBACK_CACHE_FILE="${VOICEHUB_NPM_CACHE_DIR}/pf-${FALLBACK_LOCK_HASH}.tgz"
|
||||
if [ "${FALLBACK_CACHE_FILE}" != "${CACHE_FILE}" ] && [ ! -f "${FALLBACK_CACHE_FILE}" ]; then
|
||||
tar -czf "${FALLBACK_CACHE_FILE}" node_modules
|
||||
echo "[npm cache][fallback] 已写入缓存: ${FALLBACK_CACHE_FILE}"
|
||||
fi
|
||||
else
|
||||
echo "ERROR: 降级 npm install --legacy-peer-deps 也失败(exit=${FALLBACK_EXIT}),请检查 Runner 网络是否能访问 ${NPM_REGISTRY_PRIMARY} / ${NPM_REGISTRY_FALLBACK}" >&2
|
||||
echo " 可在 Variables 中覆盖 NPM_REGISTRY_PRIMARY / NPM_REGISTRY_FALLBACK,或在 Runner 宿主机手动配 npm 代理" >&2
|
||||
echo " 快速自检(在 Runner 宿主机执行):node -v && npm -v && npm view vue version --registry=${NPM_REGISTRY_PRIMARY}" >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
if [ ! -f "${CACHE_FILE}" ]; then
|
||||
tar -czf "${CACHE_FILE}" node_modules
|
||||
echo "[npm cache] 已写入缓存: ${CACHE_FILE}"
|
||||
else
|
||||
echo "[npm cache] 已存在缓存,跳过重复写入: ${CACHE_FILE}"
|
||||
fi
|
||||
tar -czf "${CACHE_FILE}" node_modules
|
||||
echo "[npm cache] 已写入缓存: ${CACHE_FILE}"
|
||||
fi
|
||||
|
||||
- name: 检查 package.json 无 pnpm 残留
|
||||
|
||||
Generated
+115
-143
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user