diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cfe01e10..32cf0991 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -64,7 +64,9 @@ variables: .setup_fastlane_android: extends: .build_rule before_script: - - rm -rf ~/.gem ~/.bundle vendor/bundle_android # 强烈建议每次清理,防止并发/缓存污染 + - rm -rf ~/.gem ~/.bundle vendor/bundle_android + - export GEM_HOME="$PWD/vendor/bundle_android" + - export GEM_PATH="$PWD/vendor/bundle_android" - export PATH="$HOME/.rbenv/bin:$PATH" - eval "$(rbenv init -)" - rbenv global 2.7.8 @@ -95,7 +97,9 @@ variables: .setup_fastlane_ios: extends: .build_rule before_script: - - rm -rf ~/.gem ~/.bundle vendor/bundle_ios # 强烈建议每次清理,防止并发/缓存污染 + - rm -rf ~/.gem ~/.bundle vendor/bundle_ios + - export GEM_HOME="$PWD/vendor/bundle_ios" + - export GEM_PATH="$PWD/vendor/bundle_ios" - export PATH="$HOME/.rbenv/bin:$PATH" - eval "$(rbenv init -)" - rbenv global 2.7.8 diff --git a/scripts/bundle_install_retry.sh b/scripts/bundle_install_retry.sh deleted file mode 100644 index 2678b221..00000000 --- a/scripts/bundle_install_retry.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/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 \ No newline at end of file diff --git a/scripts/bundle_missing_gem_auto_add.sh b/scripts/bundle_missing_gem_auto_add.sh deleted file mode 100644 index fdc5cc64..00000000 --- a/scripts/bundle_missing_gem_auto_add.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash -# 用法: bash scripts/bundle_missing_gem_auto_add.sh -# 例如: bash scripts/bundle_missing_gem_auto_add.sh ios/Gemfile vendor/bundle_ios "bundle exec fastlane -v" - -GEMFILE_PATH="$1" -BUNDLE_PATH="$2" -MAIN_CMD="$3" - -if [ -z "$GEMFILE_PATH" ] || [ -z "$BUNDLE_PATH" ] || [ -z "$MAIN_CMD" ]; then - echo "用法: $0 " - exit 1 -fi - -max_try=3 -try_count=0 -success=0 - -bundle check --path "$BUNDLE_PATH" || bundle install --gemfile "$GEMFILE_PATH" --path "$BUNDLE_PATH" - -while [ $try_count -lt $max_try ]; do - echo "[INFO] 第$((try_count+1))次尝试运行主命令: $MAIN_CMD" - $MAIN_CMD > bundle_missing_gem.log 2>&1 && success=1 && break - # 捕获缺失gem - missing_gem=$(grep -o "Could not find [^ ]*" bundle_missing_gem.log | awk '{print $4}' | head -n1) - if [ -n "$missing_gem" ]; then - if ! grep -q "gem '$missing_gem'" "$GEMFILE_PATH"; then - echo "gem '$missing_gem'" >> "$GEMFILE_PATH" - echo "[AUTO] Gemfile已自动补全: $missing_gem" - else - echo "[WARN] Gemfile已包含 $missing_gem,但依然缺失,可能是平台或缓存问题" - fi - bundle install --gemfile "$GEMFILE_PATH" --path "$BUNDLE_PATH" - else - echo "[FATAL] 未检测到缺失gem,需人工介入。日志如下:" - cat bundle_missing_gem.log - exit 2 - fi - try_count=$((try_count+1)) - sleep 2 - echo "[WARN] 第$try_count 次自动补全后重试..." -done - -if [ $success -eq 1 ]; then - echo "[SUCCESS] 所有依赖已补全,主命令执行成功。" - exit 0 -else - echo "[FATAL] 自动补全$max_try次后依然失败,请人工检查Gemfile和依赖环境。" - exit 3 -fi \ No newline at end of file