Jenkins 使用错误版本的 Ruby(rvm)
Jenkins using wrong version of Ruby(rvm)
有下一种情况:
- 使用詹金斯
- 安装了不同 ruby 版本的 rvm(2+)
- 已安装rvm plugin
在 ruby 版本 ruby-2.3.0@global
的“构建环境”中启用选项“运行 在 RVM 管理的环境中构建”
现在谈谈问题。每次开始詹金斯工作后,我都可以看到下一个输出:
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
...
似乎一切正常。
但实际上詹金斯使用 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.
此外,如果我在“执行 shell”区域中键入 ruby -v
命令 - 然后在日志中我会看到此
+ ruby -v
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux]
我也试过在“执行shell”中直接启动命令rvm use ruby-2.3.0
。
我还把这个添加到 /var/lib/jenkis/.bashrc
:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
并尝试将 $HOME/.rvm
更改为 /usr/local/rvm
但每次结果都一样。詹金斯不使用 ruby-2.3.0
请帮我看看我错过了什么?
我运行也遇到过这个问题。事实证明,如果以 root 身份安装 rvm 会出现问题。我们必须完全卸载 rvm 并以 jenkins 用户身份重新安装,然后插件才能正确加载 rubies。
您可以通过列出 Jenkins 的 $HOME 变量指向的目录的内容来检测此问题。如果没有 .rvm 目录,那么您可能需要重新安装。
有下一种情况:
- 使用詹金斯
- 安装了不同 ruby 版本的 rvm(2+)
- 已安装rvm plugin
在 ruby 版本 ruby-2.3.0@global
现在谈谈问题。每次开始詹金斯工作后,我都可以看到下一个输出:
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
...
似乎一切正常。
但实际上詹金斯使用 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.
此外,如果我在“执行 shell”区域中键入 ruby -v
命令 - 然后在日志中我会看到此
+ ruby -v
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux]
我也试过在“执行shell”中直接启动命令rvm use ruby-2.3.0
。
我还把这个添加到 /var/lib/jenkis/.bashrc
:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
并尝试将 $HOME/.rvm
更改为 /usr/local/rvm
但每次结果都一样。詹金斯不使用 ruby-2.3.0
请帮我看看我错过了什么?
我运行也遇到过这个问题。事实证明,如果以 root 身份安装 rvm 会出现问题。我们必须完全卸载 rvm 并以 jenkins 用户身份重新安装,然后插件才能正确加载 rubies。
您可以通过列出 Jenkins 的 $HOME 变量指向的目录的内容来检测此问题。如果没有 .rvm 目录,那么您可能需要重新安装。