2017-04-19 33 views
1

Jenkins 2.55で新しいJenkinsサーバを設定すると、booleanParamパラメータはもはや動作しません。私は宣言的なパイプラインを使用しており、booleanParamは先週(更新する前に)うまくいきました。ジョブが実行されるとJenkins booleanParamがもう機能しない

pipeline 
{ 
    agent any 

    environment 
    { 
     LANG = "en_US.UTF-8" 
     LANGUAGE = "en_US.UTF-8" 
     LC_ALL = "en_US.UTF-8" 
     LC_CTYPE = "en_US.UTF-8" 
    } 

    options 
    { 
     buildDiscarder(logRotator(numToKeepStr: '5')) 
     timeout(time: 1, unit: 'HOURS') 
    } 

    parameters 
    { 
     booleanParam(name: 'DO_CHECKOUT', defaultValue: true, description: 'If checked, source code repositories are checked-out before building.') 
    } 

    stages 
    { 
     etc ... 
    } 
} 

、次のエラーを取得:

java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String 
    at hudson.EnvVars.put(EnvVars.java:74) 
    at java.util.AbstractMap.putAll(AbstractMap.java:281) 
    at java.util.TreeMap.putAll(TreeMap.java:327) 
    at hudson.EnvVars.<init>(EnvVars.java:93) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
... 

誰もが何が起こっているのか知っていますか?

+0

を参照してください。これは 'echo DO_CHECKOUT.class'で確認できます。だから 'if(DO_CHECKOUT ==" true "){...}'をチェックするか、適切なブール値に最初にキャストしてください。これが回帰か意図的かどうかはわかりません。 – Rik

+0

@Rik上記のパラメータ定義だけでJava例外が既に発生しています。 – BadmintonCat

答えて

1

現在のバージョンのJenkinのpipeline-model-definition-pluginにはバグがあるようです。 booleanパラメータを持つ環境ブロックが同じ宣言パイプラインで使用されたときに発生します。バージョン1.1.3で修正される予定です。

は、私は、デフォルト、でも砦ブールパラメータによって、それが(それは環境変数として注入されているため)の文字列であることを、考えてhttps://issues.jenkins-ci.org/browse/JENKINS-43486

+0

リンクありがとう!これは吸う! – BadmintonCat

関連する問題