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

wxclj1h5  于 2023-06-28  发布在  Jenkins
关注(0)|答案(2)|浏览(230)

有下情况:

  • 利用jenkins
  • 安装了不同版本的rvm(2+)
  • 已安装rvm plugin

在ruby版本ruby-2.3.0@global的“Build Environment”中启用“Run the build in a RVM-managed environment”选项
现在关于问题。每次启动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.

此外,如果我在“执行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
但每次结果都一样。Jenkins不使用Ruby-2.3.0
请帮我弄清楚我错过了什么?

v440hwme

v440hwme1#

我也遇到了这个问题。事实证明,如果您以root身份安装rvm,则会出现问题。我们不得不完全卸载rvm并以jenkins用户重新安装,之后插件正确加载了rubies。
您可以通过列出Jenkins的$HOME变量指向的目录的内容来检测此问题。如果没有.rvm目录,则可能需要重新安装。

dsf9zpds

dsf9zpds2#

我搞砸了这个问题几天,最后它的工作很好,感谢灵感来自:

  1. BlackRainbow-设置Jenkins $PATH变量
  2. Moncef Belyamani-为什么你不应该使用sudo来安装Ruby

我到底在做什么

1.使用rbenv管理Ruby环境
1.打开终端并执行echo $PATH
1.复制结果并粘贴到Jenkinsfile
1.重新尝试构建您的管道
1.就是这样,它在我的环境中工作得很好

附件:

  • 步骤1-2配置Ruby并获取路径环境 * x1c 0d1x

  • 步骤2-3配置Jenkinsfile*

  • 第4步构建管道 *

相关问题