Thanks Driven Life

日々是感謝

Jenkins 氏の Job View 部分が鬼になった時のお話

経緯

Jenkins にアクセスしたらいきなりの鬼

f:id:gongoZ:20140807110006p:plain

スタックトレースはこんな感じ

javax.servlet.ServletException: org.apache.commons.jelly.JellyTagException: jar:file:/Users/gongo/.jenkins/war/WEB-INF/lib/jenkins-core-1.574.jar!/hudson/model/View/index.jelly:42:43: <st:include> org.apache.commons.jelly.JellyTagException: jar:file:/Users/gongo/.jenkins/war/WEB-INF/lib/jenkins-core-1.574.jar!/lib/hudson/projectView.jelly:66:22: <d:invokeBody> null
    at org.kohsuke.stapler.jelly.JellyClassTearOff.serveIndexJelly(JellyClassTearOff.java:117)
    at org.kohsuke.stapler.jelly.JellyFacet.handleIndexRequest(JellyFacet.java:127)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:717)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:795)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:631)
    at org.kohsuke.stapler.Stapler.service(Stapler.java:225)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)

        skip...

なるほどわからん

結論から言うと

Build Pipeline View の作成を途中で止める とこうなるので、最後までやり遂げましょう

今回の現象が起こりうる対象

Build Pipeline Plugin を導入している

再現手順

  1. 新規ビューの作成 /newViewBuild Pipeline View を選択

    f:id:gongoZ:20140807111005p:plain

  2. ↑ で作成したビューの設定画面が表示されます

    f:id:gongoZ:20140807111113p:plain

  3. ↑ の画面で 保存ボタンや適用ボタンを 押さずに トップ画面に移動する

  4. 鬼降臨

原因

まあよくわかってないんですが、上記 1 の画面で OK を押した時点でシステムログに

Aug 07, 2014 11:10:28 AM hudson.ExpressionFactory2$JexlExpression evaluate
WARNING: Caught exception evaluating: h.hasPermission(it, permission) in /view/pipeline/configure. Reason: java.lang.NumberFormatException: null
java.lang.NumberFormatException: null
        at java.lang.Integer.parseInt(Integer.java:454)
        at java.lang.Integer.valueOf(Integer.java:582

みたいなのが出てたりするので、とりあえず Build Pipeline Plugin の何かがおかしいんでしょう。

それらしきバグ報告も挙がっています

対策

途中で放り出さないで最後まで設定すれば問題ないと思いますが、万一ブラウザが落ちたりすることもあるので、その場合は

  • /view/ビュー名/configure に直接アクセスして保存or適用しなおす、もしくは削除する
  • config.xml から直接、該当しそうな Build Pipeline View の設定箇所を削除する
    • <au.com.centrumsystems.hudson.plugin.buildpipeline.BuildPipelineView ...> みたいな箇所が探索機能ポイントです

「設定ファイル xml だしぱっとわからねー」という方は JobConfigHistory Plugin を入れておくと便利です

f:id:gongoZ:20140807112505p:plain

まとめ

Jenkins でエラー出てもぱっとわからない。Java 力が足りない。もしくは紳士さに欠ける