Jenkins 使用错误版本的 Ruby(rvm)

标签 jenkins rvm jenkins-plugins

有下一个情况:

  • 使用 Jenkins
  • 安装了不同 ruby​​ 版本的 rvm(2+)
  • 已安装 rvm plugin

  • 使用 ruby​​ 版本在“构建环境”中启用选项“在 RVM 管理的环境中运行构建”ruby-2.3.0@global现在关于问题。每次开始 jenkins 工作后,我都可以看到下一个输出:
    Capturing environment variables produced by 'rvm use ruby-2.3.0@global'
    $ bash -c export
    [workspace] $ bash -c " source /usr/local/rvm/scripts/rvm && rvm use --install --create ruby-2.3.0@global && export > rvm.env"
    Using /usr/local/rvm/gems/ruby-2.3.0 with gemset global
    ...
    
    似乎一切正常。
    但实际上 Jenkins 使用 ruby-2.2.0因为在日志下面我发现了这个:
    +++ __path_to_ruby=/usr/local/rvm/rubies/ruby-2.2.0/bin/ruby
    +++ [[ -z /usr/local/rvm/rubies/ruby-2.2.0/bin/ruby ]]
    +++ [[ /usr/local/rvm/rubies/ruby-2.2.0/bin/ruby != \/\u\s\r\/\l\o\c\a\l\/\r\v\m* ]]
    +++ [[ /usr/local/rvm/rubies/ruby-2.2.0/bin/ruby == \/\u\s\r\/\l\o\c\a\l\/\r\v\m\/\b\i\n\/\r\u\b\y ]]
    +++ [[ /usr/local/rvm/rubies/ruby-2.2.0/bin/ruby == \/\u\s\r\/\l\o\c\a\l\/\r\v\m* ]]
    +++ [[ -z /usr/local/rvm/gems/ruby-2.2.0 ]]
    +++ [[ -z /usr/local/rvm/gems/ruby-2.2.0:/usr/local/rvm/gems/ruby-2.2.0@global ]]
    ...
    
    下一个问题源于这里:
    Gem::InstallError: activesupport requires Ruby version >= 2.2.2.
    
    如果我输入 ruby -v命令在“执行 shell”区域 - 然后在日志中我看到这个
    + ruby -v
    ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux]
    
    我也尝试启动命令 rvm use ruby-2.3.0直接在“执行shell”中。
    我也将此添加到 /var/lib/jenkis/.bashrc :
    [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
    
    并试图改变 $HOME/.rvm/usr/local/rvm但每次结果都一样。 Jenkins 不使用 ruby​​-2.3.0
    请帮我弄清楚我错过了什么?

    最佳答案

    我也遇到了这个问题。事实证明,如果您以 root 身份安装 rvm,则会出现问题。我们必须完全卸载 rvm 并以 jenkins 用户身份重新安装,之后插件才能正确加载 rubies。

    您可以通过列出 Jenkins 的 $HOME 变量指向的目录的内容来检测此问题。如果没有 .rvm 目录,则您可能需要重新安装。

    关于 Jenkins 使用错误版本的 Ruby(rvm),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41633776/

    相关文章:

    jenkins - 如何使用参数来控制 Jenkins 中的作业后期构建操作

    maven - 使用功能分支时避免 Maven 存储库版本冲突

    RVM .ruby-gemset 文件不切换 gemset

    ruby - 安装和使用最新版本的 Ruby

    jenkins - 在 Jenkins 上用 SpotBugs 替换 FindBugs 时应该使用哪个插件?

    jenkins - 复制工件插件 - 从工作空间复制,无需从工件复制路径

    email - Jenkins Email-ext 插件构建日志全部在一行中

    Selenium 测试在 Jenkins 运行时失败,但在命令行运行时成功

    c++ - Jenkins 和单元测试框架支持的 C 插件?

    ruby-on-rails - 如何使用 RVM 卸载 ruby​​ 和 gems?