Mac Book Proを購入し、以前ローカルで使用していたJenkinsを移行した時にハマったので、ハマったポイントをここに記載しておきます。
rbenv plugin
デフォルトでRBENV_ROOTが"$HOME/.rbenv"になっており、rbenvはそこから利用されるわけだが、rbenv build wrapper利用時だと、指定場所のbin/rbenvを使用しようとしておりエラーとなる
FATAL: (CommandError) failed: "env RBENV_ROOT\\=\\$HOME/.rbenv RBENV_VERSION\\=2.1.5 \\$HOME/.rbenv/bin/rbenv versions --bare"
org.jruby.exceptions.RaiseException: (CommandError) failed: "env RBENV_ROOT\\=\\$HOME/.rbenv RBENV_VERSION\\=2.1.5 \\$HOME/.rbenv/bin/rbenv versions --bare"
解決策
これはrbenv build wrapperがリポジトリから落としてきたrbenvを想定して作られているため、brew install等で入れたrbenvでは構造が違うため、上記のシェルでは実行できない。
そのため、RBENV_ROOTを"$HOME/.rbenv-jenkins"等、別の場所を指定してやると、wrapperがgit cloneから行ってくれるので、既にインストールされているrbenvと別の場所を指定してあげればいい。
RubyMetrics plugin
Rails Reportを出力しようとするとエラーになる。
ERROR: Build step failed with exception
java.lang.NullPointerException
at hudson.plugins.rake.Util.getExecutable(Util.java:22)
at hudson.plugins.rake.RubyInstallation.getCanonicalExecutable(RubyInstallation.java:70)
at hudson.plugins.rake.Util.getCanonicalRubies(Util.java:212)
at hudson.plugins.rake.Util.getCanonicalRubies(Util.java:198)
at hudson.plugins.rake.Rake$RakeDescriptor.loadInstallations(Rake.java:245)
at hudson.plugins.rake.Rake.perform(Rake.java:100)
at hudson.plugins.rubyMetrics.AbstractRailsTaskPublisher.perform(AbstractRailsTaskPublisher.java:65)
at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:764)
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:724)
at hudson.model.Build$BuildExecution.post2(Build.java:185)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:671)
at hudson.model.Run.execute(Run.java:1769)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:98)
at hudson.model.Executor.run(Executor.java:374)
Build step 'Publish Rails Notes report' marked build as failure
Publishing rails stats report...
ERROR: Build step failed with exception
java.lang.NullPointerException
at hudson.plugins.rake.Util.getExecutable(Util.java:22)
at hudson.plugins.rake.RubyInstallation.getCanonicalExecutable(RubyInstallation.java:70)
at hudson.plugins.rake.Util.getCanonicalRubies(Util.java:212)
at hudson.plugins.rake.Util.getCanonicalRubies(Util.java:198)
at hudson.plugins.rake.Rake$RakeDescriptor.loadInstallations(Rake.java:245)
at hudson.plugins.rake.Rake.perform(Rake.java:100)
at hudson.plugins.rubyMetrics.AbstractRailsTaskPublisher.perform(AbstractRailsTaskPublisher.java:65)
at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:764)
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:724)
at hudson.model.Build$BuildExecution.post2(Build.java:185)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:671)
at hudson.model.Run.execute(Run.java:1769)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:98)
at hudson.model.Executor.run(Executor.java:374)
Build step 'Publish Rails stats report' marked build as failure
最終的にヌルポになるのでエラーの区別がつきづらい。。。
恐らくRakeのversionをDefaultに指定しているため、gem内に何かインストールしてないからだと思われる。
解決策
そもそもDefaultってmacにデフォルトでインストールされているrubyからなのかな。。。
rbenvでrubyを管理しているので直接それを使用してもらうようにする。
- Jenkinsの管理 > システムの設定を開き Rakeまで移動する。
- Ruby installationの"追加"をクリックし使用するrubyが格納されているパスを指定する。
- 保存し、jobのRails ReportでRake Versionを先ほどの保存したものを選択する。
使用するrubyはrbenv build wrapperで指定したrbenv内のrubyのパスを指定してやるとgemのインストール漏れはないはずなので安心である。
ただし、まだjenkinsで使用するrbenvを未インストールの場合だと、Rake Versionにパスを追加できないので、あらかじめrbenvインストール用にjobを走らせる必要がある。