【问题标题】:Jenkins, rbenv, bundler - When using Jenkins and rbenv, how does the rbenv plugin preinstall bundler, and why isn't it in my case?Jenkins, rbenv, bundler - 使用 Jenkins 和 rbenv 时,rbenv 插件如何预安装 bundler,为什么我的情况不是这样?
【发布时间】:2016-10-03 07:29:40
【问题描述】:

我正在使用 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)

等等。

bundler 的 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

我的预安装 gem 是 rake,bundler - 但似乎只有 rake 预安装正确。

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

【问题讨论】:

    标签: ruby jenkins rbenv


    【解决方案1】:

    在这种情况下,结果证明是 gem 依赖项出现错误 - 当一切都说完了之后,一个错误的 nokogiri 安装。

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

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

    因此,如果您迷路并在类似的地方寻找指导,请尝试将任务作为 shell 行运行,这样您会得到更详细的错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-10
      • 1970-01-01
      • 1970-01-01
      • 2015-12-27
      相关资源
      最近更新 更多