diff --git a/scripts/ci/_env.sh b/scripts/ci/_env.sh index a06330f..c732293 100755 --- a/scripts/ci/_env.sh +++ b/scripts/ci/_env.sh @@ -29,3 +29,18 @@ ver_from_tag() { ref="${ref#"${prefix}"-v}" printf '%s' "$ref" } + +# flutter_pub_get_retry — pub.flutter-io.cn 常被 GFW 抖断(socket error / exit 69), +# 让 flutter build 内隐式的 pub get 偶发失败(见 iOS build 曾因 google_fonts 拉包 +# 断线而挂)。构建前显式预取 + 重试;成功后 build 命中缓存不再拉网。在 flutter +# 项目根目录调用。 +flutter_pub_get_retry() { + local i + for i in 1 2 3 4 5; do + if flutter pub get; then return 0; fi + echo "==> flutter pub get 失败(第 ${i}/5 次,pub.flutter-io.cn 抖?),8s 后重试..." >&2 + sleep 8 + done + echo "==> flutter pub get 5 次仍失败,放弃" >&2 + return 1 +} diff --git a/scripts/ci/compile-android.sh b/scripts/ci/compile-android.sh index 49d17de..9e42a7f 100755 --- a/scripts/ci/compile-android.sh +++ b/scripts/ci/compile-android.sh @@ -131,6 +131,7 @@ EOF # 现代绝大多数 Android 机)作为唯一下载,约 ~80MB;32 位老机(armeabi-v7a)/模拟器 # (x86_64)本轮不分发(需要再加)。这样官网 + deploy-client 仍是单一稳定 URL。 cd client +flutter_pub_get_retry # 预取包 + 重试,防 pub.flutter-io.cn 被 GFW 抖断(见 _env.sh) flutter build apk --release --split-per-abi \ "--dart-define=PANGOLIN_API_URL=${API_URL}" cd .. diff --git a/scripts/ci/compile-ios.sh b/scripts/ci/compile-ios.sh index 751d680..134acc0 100755 --- a/scripts/ci/compile-ios.sh +++ b/scripts/ci/compile-ios.sh @@ -173,6 +173,7 @@ EOF # ── [6/6] flutter build ipa + 上传 TestFlight ─────────────────────────────── cd "${REPO_ROOT}/client" +flutter_pub_get_retry # 预取包 + 重试,防 pub.flutter-io.cn 被 GFW 抖断(见 _env.sh) flutter build ipa --release \ --build-name="${VER}" \ --build-number="${BUILD}" \ diff --git a/scripts/ci/compile-macos.sh b/scripts/ci/compile-macos.sh index 551d3b5..4d362b1 100755 --- a/scripts/ci/compile-macos.sh +++ b/scripts/ci/compile-macos.sh @@ -182,6 +182,7 @@ echo "==> compile-macos: signing identity '${IDENTITY}'" # 明),本步应已产出 Developer ID 签名 + hardened runtime 的 .app;下一步的 # inside-out 重签是幂等的安全网,不依赖这一步是否已经"恰好签对"。 cd "${REPO_ROOT}/client" +flutter_pub_get_retry # 预取包 + 重试,防 pub.flutter-io.cn 被 GFW 抖断(见 _env.sh) flutter build macos --release --dart-define="PANGOLIN_API_URL=${API_URL}" cd "$REPO_ROOT" diff --git a/scripts/ci/compile-windows.sh b/scripts/ci/compile-windows.sh index aaacbfb..5a5a14c 100755 --- a/scripts/ci/compile-windows.sh +++ b/scripts/ci/compile-windows.sh @@ -103,6 +103,7 @@ echo "==> compile-windows: pubspec version -> ${VER}+${BUILD}" # on first real CI run that none of those get clobbered. pushd "$BUILD_CLIENT" > /dev/null flutter create --platforms=windows . --project-name pangolin_vpn +flutter_pub_get_retry # 预取包 + 重试,防 pub.flutter-io.cn 被 GFW 抖断(见 _env.sh) flutter build windows --release "--dart-define=PANGOLIN_API_URL=${API_URL}" popd > /dev/null