5

我从 Ubuntu 服务器上的 RVM 迁移到 rbenv。

当我使用 RVM 时,使用 bundle 没有问题。移至 rbenv 后,我在 Jenkins 的执行 shell 中收到“找不到命令”错误。

我内爆并删除了 RVM,并从 ~/.bashrc' 中删除了所有与 RVM 相关的行。使用后我仍然收到此错误:

rvm implode
rm ~/.rvm -rf
rm ~/.rvmrc 

gem install bundler
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc

. ~/.bashrc

rbenv versions

jenkins@testserver:~/jobs/myjob/workspace$ rbenv versions

* 1.9.3-p374 (set by RBENV_VERSION environment variable)
4

3 回答 3

10

您似乎已经在您的 shell 中正确安装了 rbenv。但是,如果 Jenkins 也没有~/.bashrc为您提供资源,它就不会知道您的系统上有 rbenv。因此,在 Jenkins 中,您必须确保执行命令的 PATH 还包括$HOME/.rbenv/bin$HOME/.rbenv/shims.

eval "$(rbenv init -)"在 Jenkins 中不需要使用;这仅对交互式 shell 有用。

于 2013-04-05T20:55:47.527 回答
2

@mislav 的回答可能是正确的,但实际上对我有用的是:

sh '''
#!/bin/bash
export PATH=$PATH:/usr/local/bin:$HOME/.rbenv/bin:$HOME/.rbenv/shims
eval "$(rbenv init -)"
rbenv local
rbenv rehash
'''

事实上,我并没有看到 rbenv/usr/local/bin在我的$PATH.

于 2017-03-16T02:10:59.597 回答
0

我们正在做以下事情

sh '''
#!/bin/bash
source ~/buildmac-init

bundle update
bundle exec fastlane build
'''

在这个buildmac-init文件中(在其他变量中):

...
export RBENV_ROOT=/usr/local/var/rbenv
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
...
于 2019-12-05T15:07:53.537 回答