#!/bin/bash # 用法: ./scripts/bundle_install_retry.sh # 例如: ./scripts/bundle_install_retry.sh android/Gemfile vendor/bundle_android GEMFILE_PATH="$1" BUNDLE_PATH="$2" if [ -z "$GEMFILE_PATH" ] || [ -z "$BUNDLE_PATH" ]; then echo "用法: $0 " exit 1 fi try_count=0 max_try=3 success=0 # 先用阿里云镜像 bundle config mirror.https://rubygems.org https://mirrors.aliyun.com/rubygems/ while [ $try_count -lt $max_try ]; do echo "[INFO] 第$((try_count+1))次尝试使用阿里云镜像 bundle install..." bundle config set --local path "$BUNDLE_PATH" bundle install --gemfile "$GEMFILE_PATH" if [ $? -eq 0 ]; then echo "[SUCCESS] 使用阿里云镜像 bundle install 成功" success=1 break fi try_count=$((try_count+1)) sleep 2 echo "[WARN] 阿里云镜像 bundle install 第$try_count 次失败,准备重试..." done if [ $success -eq 0 ]; then echo "[ERROR] 阿里云镜像 bundle install 失败$max_try次,切换为官方源重试..." bundle config mirror.https://rubygems.org https://rubygems.org bundle config set --local path "$BUNDLE_PATH" bundle install --gemfile "$GEMFILE_PATH" if [ $? -eq 0 ]; then echo "[SUCCESS] 官方源 bundle install 成功" exit 0 else echo "[FATAL] 官方源 bundle install 依然失败,请检查网络或Gemfile配置。" exit 2 fi fi exit 0