【问题标题】:rbenv: command not found in Jenkins execute shell after moving to rbenv from RVMrbenv:从 RVM 移动到 rbenv 后,在 Jenkins 中找不到命令执行 shell
【发布时间】:2013-03-13 10:12:57
【问题描述】:

我从 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)

【问题讨论】:

    标签: ruby-on-rails ruby jenkins rbenv


    【解决方案1】:

    您似乎已经在您的 shell 中正确安装了 rbenv。但是,如果 Jenkins 也没有获取您的 ~/.bashrc,它就不会知道您的系统上有 rbenv。所以在 Jenkins 中,你必须确保你执行命令的 PATH 也包含$HOME/.rbenv/bin$HOME/.rbenv/shims

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

    【讨论】:

      【解决方案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 中。

      【讨论】:

        【解决方案3】:

        我们正在做以下事情

        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
        ...
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-04-29
          • 1970-01-01
          • 1970-01-01
          • 2017-03-08
          • 2014-02-12
          • 1970-01-01
          • 2022-06-14
          相关资源
          最近更新 更多