GitHub Actions中Fastlane Ruby版本不匹配问题求助
问题排查与解决方案
核心原因
你遇到的问题是当前执行bundle exec时调用的bundler属于系统默认的Ruby 3.0.2环境,而非你指定的Ruby 2.7.7环境。虽然ruby --version显示版本正确,但bundler的路径未同步切换到目标Ruby版本的bin目录,导致Gemfile的版本校验失败。
具体解决步骤
1. 调整GitHub Actions中Ruby与Bundler的配置
确保在setup-ruby后,强制安装与Ruby 2.7.7兼容的bundler版本,并重新安装依赖:
- name: Set up Ruby 2.7.7 uses: ruby/setup-ruby@v1 with: ruby-version: '2.7.7' # 暂时关闭自动缓存,先手动处理依赖确保环境一致 bundler-cache: false - name: Install compatible Bundler and dependencies run: | # 安装与Ruby 2.7.7匹配的bundler版本(2.x系列) gem install bundler:2.3.26 # 重新安装依赖,生成对应版本的Gemfile.lock bundle install --jobs 4 --retry 3
2. 验证环境一致性(可选调试步骤)
在执行Fastlane前添加调试步骤,确认Ruby和Bundler的路径与版本匹配:
- name: Debug Ruby/Bundler environment run: | echo "Ruby path: $(which ruby)" ruby --version echo "Bundler path: $(which bundle)" bundle --version bundle env | grep "Ruby Version"
如果输出中Bundler对应的Ruby版本不是2.7.7,说明环境路径未正确切换,需检查setup-ruby的执行日志是否有报错。
3. 修正Fastlane执行命令
如果上述步骤仍有问题,直接指定当前Ruby环境下的Bundler路径执行:
- name: Run Fastlane Android Alpha run: $(which bundle) exec fastlane android alpha
4. 检查Gemfile配置
确认项目根目录的Gemfile开头明确指定了Ruby版本:
ruby '2.7.7'
如果之前生成的Gemfile.lock是基于其他Ruby版本,建议删除后重新执行bundle install生成新的锁文件。
内容的提问来源于stack exchange,提问作者black sensei
相关产品推荐
相关产品推荐

