2014-10-22 8 views
5

में सच है, मेरे पास एक जेनकिन्स नौकरी है जो एक ग्रोवी स्क्रिप्ट कहती है और ग्रोवी स्क्रिप्ट जेनकिंस पैरामीटर का उपयोग करने के लिए इसका काम करती है। मैं एक बुलियन पैरामीटर को छोड़कर किसी भी समस्या के बिना सभी पैरामीटर पुनर्प्राप्त कर सकते हैं।जेनकिन्स बूलियन पैरामीटर हमेशा groovy

boolean libraryBranch = config.get('library_branch_feature'); 

अब जब मैं 'libraryBranch' चर

out.println "-- Library branch feature?: " + libraryBranch.toString(); 

प्रिंट: बूलियन पैरामीटर जेनकींस

unselected boolean parameter

में एक चेकबॉक्स मैं ग्रूवी में जेनकींस पैरामीटर पढ़ इस प्रकार है मुझे निम्नलिखित मुद्रित रेखा मिलती है:

- लाइब्रेरी शाखा सुविधा: सच

तो यह फर्क नहीं पड़ता अगर बूलियन जेनकींस पैरामीटर चयन किया जाता है या नहीं मैं हमेशा ग्रूवी में एक बूलियन मान 'सही' है। एक ही नौकरी के अंदर अन्य सभी (स्ट्रिंग) पैरामीटर बिना किसी समस्या के पढ़े जाते हैं।

क्या कोई इस मुद्दे के साथ मेरी सहायता कर सकता है?

संपादित

ठीक है, मैं कोशिश करते हैं और अन्य तरीकों के एक जोड़े में कोड को पुनः प्राप्त करने और एक अच्छा समाधान खोजने के लिए tyring करने का निर्णय लिया:

Boolean libraryBranch = build.buildVariableResolver.resolve("library_branch_feature"); 
String libraryBranchString = build.buildVariableResolver.resolve("library_branch_feature").toString(); 
Boolean libraryBranchStringAsBoolean = build.buildVariableResolver.resolve("library_branch_feature") as Boolean; 

ऊपर चर तो मुद्रित कर रहे हैं:

out.println "-- Library branch feature?: " + libraryBranch; 
out.println "-- Library branch feature to String: " + libraryBranch.toString(); 
out.println "-- Library branch feature to String: " + libraryBranch.toString(); 
out.println "-- Library branch feature as String: " + libraryBranchString; 
out.println "-- Library branch feature String as Boolean: " + libraryBranchStringAsBoolean; 

ऊपर प्रिंट के उत्पादन में नीचे पोस्ट कर रहे हैं:

-- Library branch feature?: true 
-- Library branch feature to String: true 
-- Library branch feature to String: true 
-- Library branch feature as String: false 
-- Library branch feature String as Boolean: true 

तो इतनी दूर तक कि बूलियन मान को झूठ के रूप में सही तरीके से पढ़ने का एकमात्र तरीका यह है कि इसे एक बूलियन में नहीं बदलना है बल्कि इसे एक स्ट्रिंग के रूप में पढ़ना और इसे स्ट्रिंग के रूप में उपयोग करना है।

मैं इसे बूलियन के रूप में उपयोग करता हूं हालांकि इस मामले पर किसी भी सुझाव की सराहना की जाती है।

उत्तर

6

उत्तर जेनकिंस पैरामीटर को स्ट्रिंग के रूप में पढ़ना है और फिर विधि का उपयोग करके इसे बुलियन में परिवर्तित करना है .toBoolean(); तो मेरी libraryBranch अब इस प्रकार सेट है:

boolean libraryBranch = build.buildVariableResolver.resolve("library_branch_feature").toString().toBoolean(); 
0

मैं जावा गुण पढ़ने के साथ एक ही समस्या का सामना करना पड़ा - पुनः प्राप्त बूलियन मूल्यों हमेशा सच नहीं है। तो, कहें कि मेरे पास फ़ाइल debugging=false है। यह परीक्षण असफल हो जायेगी:

class ConfigurationTest extends GroovyTestCase { 
    void testProcessConfiguration() { 
     Properties properties=new Properties() 
     FileReader fileReader=new FileReader('settings') 
     properties.load(fileReader) 
     boolean debug=properties.getOrDefault('debugging',false) 
     assert !debug 
     fileReader.close() 
    } 
} 

लेकिन अगर आप इसे properties.getOrDefault('debugging',false).toString().toBoolean() यह सही मान प्रदान करेंगे। शायद यह जबरदस्ती के कारण है?

सेट पाइपलाइन सेटअप में एक बूलियन के रूप में चर 'testmode':

1
बस जिज्ञासा से बाहर

, मैं निम्नलिखित की कोशिश की। जॉब शुरू करें, testmode सेट झूठी (अनचेक) के साथ। पाइपलाइन स्क्रिप्ट में, प्रवेश पर तुरंत निम्न कोड चलाएँ:

testmode=testmode.toBoolean() 
    if (testmode==false) { print "testmode tests true"}else{print "testmode tests false"} 

आप परिणाम 'testmode परीक्षण झूठी' देखेंगे।

मेरी का दावा है कि 'बूलियन' चर testmode जब यह आता है वास्तव में एक स्ट्रिंग है सत्यापित करने के लिए, मैं करने की कोशिश की:

testmode=testmode.toBoolean() 
    testmode=testmode.toBoolean() 

और यह 2 'toBoolean' पर तबाह हो गया। मैं आपको त्रुटि संदेश छोड़ दूंगा ...

तो, मेरा दावा है कि टेस्टमोड एक बूलियन के रूप में स्ट्रिंग "झूठी" के रूप में आता है (भले ही पदोन्नति, भक्ति, मजबूती, जो कुछ भी हो)।

तो, यदि यह एक बूलियन पैरामीटर है, और आप वास्तव में इसे एक बुलियन की तरह व्यवहार करना चाहते हैं और 'if (booleanvar == "true")' कहना नहीं है, तो इसे ऊपर के रूप में एक बूलियन में परिवर्तित करें और आप ' फिर से किया