Jenkins,rbenv,bundler - 当使用Jenkins和rbenv时,rbenv插件如何预安装bundler,为什么不在我的情况下?

时间:2016-10-02 00:14:57

标签: ruby jenkins rbenv

我正在使用Jenkins和Appium的Ruby库在OSX上设置CI环境。

我正在使用rake任务在RSpec中启动我的测试套件。

使用类似的配置,我能够在另一台机器上使用Jenkins运行测试。我现在正在使用rbenv(和rbenv插件)并遇到一些问题。

这是我尝试运作时得到的结果:

$ bash -c "[ -d \$HOME/.rbenv-jenkins ]"
$ bash -c "[ -d \$HOME/.rbenv-jenkins/plugins/ruby-build ]"
$ bash -c "cd /Users/Shared/Jenkins/Home/workspace/Tests && env  RBENV_ROOT\=\$HOME/.rbenv-jenkins RBENV_VERSION\=2.2.5 CONFIGURE_OPTS\= RUBY_CONFIGURE_OPTS\= \$HOME/.rbenv-jenkins/bin/rbenv local 2>/dev/null || true"
Use local Ruby version 2.2.5.
$ bash -c "mkdir \$HOME/.rbenv-jenkins/.lock"
$ bash -c "env RBENV_ROOT\=\$HOME/.rbenv-jenkins RBENV_VERSION\=2.2.5 CONFIGURE_OPTS\= RUBY_CONFIGURE_OPTS\= \$HOME/.rbenv-jenkins/bin/rbenv versions --bare"
$ bash -c "env RBENV_ROOT\=\$HOME/.rbenv-jenkins RBENV_VERSION\=2.2.5 CONFIGURE_OPTS\= RUBY_CONFIGURE_OPTS\= \$HOME/.rbenv-jenkins/bin/rbenv rehash"
$ bash -c "env RBENV_ROOT\=\$HOME/.rbenv-jenkins RBENV_VERSION\=2.2.5 CONFIGURE_OPTS\= RUBY_CONFIGURE_OPTS\= \$HOME/.rbenv-jenkins/bin/rbenv exec gem list"
$ bash -c "env RBENV_ROOT\=\$HOME/.rbenv-jenkins RBENV_VERSION\=2.2.5 CONFIGURE_OPTS\= RUBY_CONFIGURE_OPTS\= \$HOME/.rbenv-jenkins/bin/rbenv rehash"
$ bash -c "rm -rf \$HOME/.rbenv-jenkins/.lock"
[Tests] $ bundle exec rake ios
FATAL: rake execution failed
java.io.IOException: Cannot run program "bundle" (in directory "/Users/Shared/Jenkins/Home/workspace/Tests"): error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at hudson.Proc$LocalProc.<init>(Proc.java:240)
at hudson.Proc$LocalProc.<init>(Proc.java:212)

等。

似乎捆绑器的exec存在问题,而不是它应该在的位置。

我尝试过添加     export PATH="$HOME/.rbenv-jenkins/bin:$PATH" 以某种方式走向路径,但似乎它没有什么区别 - 当它是一个shell步骤我看到它运行,但我没有变化。

我已经预装了我的rbenv插件启用的rake和bundler,但是我没有看到它们被安装 - 我不知道为什么。

当我登录Jenkins用户时,我可以通过rspecrakebundle exec rake运行测试。

知道什么是不应该做的应该是什么?如果有任何遗漏的细节,请告诉我,谢谢!

编辑:

当我添加gem install bundlegem install rake shell命令时,我得到以下内容:

+ gem install bundler
Successfully installed bundler-1.13.2
Parsing documentation for bundler-1.13.2
Done installing documentation for bundler after 4 seconds
1 gem installed
+ gem install rake
ERROR:  Error installing rake:
    "rake" from rake conflicts with /Users/Shared/Jenkins/.rbenv-jenkins/versions/2.2.5/bin/rake
Build step 'Execute shell' marked build as failure
Finished: FAILURE

我的预安装宝石是rake,bundler - 但似乎只有rake才能正确预安装。

在不安装rake的情况下运行作业(并在安装捆绑器后使用rbenv rehash),我得到了同样的错误。

1 个答案:

答案 0 :(得分:0)

在这种情况下,结果证明是一个错误的gem依赖 - 一个糟糕的nokogiri安装,当所有的说完成。

我能够通过运行checkedRadioButton.getText().toString()(我的测试任务)作为shell命令而不是通过插件执行rake任务来揭示错误消息让我狩猎。

从那里,我得到一个关于坏版本的错误,在尝试了一些gemfile调整(以及我的Gemfile.lock)之后,我将bundle install作为shell行运行,并注意到nokogiri安装以熟悉的方式失败(由于某些Xcode版本杂耍,我怀疑是相当特殊的)。

因此,如果您在类似的位置丢失并寻找指导,请尝试将该任务作为shell行运行,以便您获得更详细的错误。