You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

GitLab CI/CD任务安装Bundler时失败:已安装2.2.5版本仍提示需使用Bundler 2及以上版本

解决GitLab CI中Bundler版本不匹配的问题

嘿,我之前碰到过一模一样的坑!这个报错本质是CI环境里同时存在多个Bundler版本,哪怕你装了2.2.5,系统还是偷偷调用了旧版本来处理你的lockfile。给你几个靠谱的解决步骤:

1. 彻底清理旧版本的Bundler

Ruby 2.5.1的官方镜像默认带的Bundler版本大概率是1.x的,就算你装了新的,系统可能还是优先用旧的。第一步先把所有旧版本卸载干净:

gem uninstall bundler -a -x

-a表示卸载所有已安装的Bundler版本,-x是跳过确认直接卸载,适合CI环境自动执行。

2. 重新安装指定版本并验证

装完干净的2.2.5版本后,一定要验证一下版本是否正确,避免踩坑:

gem install bundler -v 2.2.5
bundler --version

这一步能确保当前环境用的确实是2.2.5版本。

3. 强制指定Bundler版本执行install

保险起见,在执行bundle install的时候直接指定版本,彻底避免版本混淆:

bundle _2.2.5_ install

修改后的完整GitLab CI配置

把这些步骤整合到你的配置里,最终的gitlab-ci.yml应该是这样:

stages:
  - test
test-job:
  stage: test
  image: ruby:2.5.1
  script:
    - gem uninstall bundler -a -x
    - gem install bundler -v 2.2.5
    - bundler --version
    - bundle _2.2.5_ install
    - bundle exec rails test

额外检查点

如果还是不行,去看看你的Gemfile.lock文件末尾的BUNDLED WITH字段,是不是写的2.2.5?如果不是的话,在本地运行bundle update --bundler更新lockfile,然后把更新后的lockfile提交到仓库里,这样CI环境就会用对应的Bundler版本来处理了。

内容的提问来源于stack exchange,提问作者Raswidr

火山引擎 最新活动