You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 16:43:09