客户端在macOS机器上安装了jenkins。它正在进行iOS构建,并使用bundler来安装一些宝石。一个宝石最近开始要求依赖,而这依赖需要ruby> = 2.1
Installing jwt 2.1.0
Gem::InstallError: jwt requires Ruby version >= 2.1.
An error occurred while installing jwt (2.1.0), and Bundler cannot continue.
首先,我在macOS机器上安装了rvm和ruby 2.1.0
osxbuildserver:~ jenkins$ ruby -v
ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-darwin14.0]
并且对于ssh登录用户,它显示正常。问题是,即使是强硬的Jenkins也会在同一个jenkins用户下运行
root 15102 1 15102 0 0 Ss ?? 0:00.04 sshd: jenkins [priv]
jenkins 15106 15102 15102 0 0 S ?? 0:00.03 sshd: jenkins@ttys000
它仍然使用2.0.0的系统ruby。在其中一个版本中,我添加了一个带有ruby -v
[EnvInject] - Variables injected successfully.
[workspace] $ /bin/sh -xe /var/folders/6v/xlw3p2pn47d2jl_jghf25dn00000gr/T/hudson73325394438439334.sh
+ ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin16]
调用
ssh jenkins@osxbuild "echo $PATH"
从我的本地计算机返回错误的路径
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
但是使用同一个用户登录
osxbuildserver:~ jenkins$ echo $PATH
/Users/jenkins/.rvm/gems/ruby-2.1.0/bin:/Users/jenkins/.rvm/gems/ruby-2.1.0@global/bin:/Users/jenkins/.rvm/rubies/ruby-2.1.0/bin.... etc
我已经尝试过这里的答案Jenkins using System Ruby - use rvm ruby?,但它没有帮助。
我的.bash_profile内容
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home
export ANDROID_HOME=/Users/jenkins/Library/Android/sdk
export ANDROID_SDK=$ANDROID_HOME
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$JAVA_HOME
export TESSDATA_PREFIX=$HOME/tesseract-ocr
source ~/.profile
source $HOME/.rvm/scripts/rvm