我正在使用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用户时,我可以通过rspec
,rake
和bundle exec rake
运行测试。
知道什么是不应该做的应该是什么?如果有任何遗漏的细节,请告诉我,谢谢!
编辑:
当我添加gem install bundle
和gem 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),我得到了同样的错误。
答案 0 :(得分:0)
在这种情况下,结果证明是一个错误的gem依赖 - 一个糟糕的nokogiri安装,当所有的说完成。
我能够通过运行checkedRadioButton.getText().toString()
(我的测试任务)作为shell命令而不是通过插件执行rake任务来揭示错误消息让我狩猎。
从那里,我得到一个关于坏版本的错误,在尝试了一些gemfile调整(以及我的Gemfile.lock)之后,我将bundle install作为shell行运行,并注意到nokogiri安装以熟悉的方式失败(由于某些Xcode版本杂耍,我怀疑是相当特殊的)。
因此,如果您在类似的位置丢失并寻找指导,请尝试将该任务作为shell行运行,以便您获得更详细的错误。