2017-04-19 76 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

回答