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




