चर चर बीटवैन ग्रूवी फाइलें


9

मैं DSL प्लगइन द्वारा जेनकिंस में कई नौकरियों का प्रबंधन कर रहा हूं। वह प्लगइन .groovy परिभाषाओं का उपयोग कर रहा है, इसलिए मुझे लगता है कि भले ही कोई जेनकींस का उपयोग न करे लेकिन ग्रूवी का उपयोग करने में मदद कर सकता है।

आम तौर पर, मैं एक अतिरिक्त फ़ाइल बनाना चाहता हूं, जो कि एक ग्रूवी फ़ाइल, JSON या YAML हो सकती है, जो भी हो। यह महत्वपूर्ण है कि उस फ़ाइल को मेरी .groovy फ़ाइल से जोड़ा जाए।

उस फ़ाइल में, मैं आईपी या अन्य सामान जैसे उदाहरण के लिए चर (बल्कि सिर्फ तार) को परिभाषित कर रहा हूं।

ip_gitlab: 1.2.3.4
default_user: admin

मेरी groovy फ़ाइलों में, मैं इन चरों का उपयोग करने में सक्षम होना चाहता हूं।

यह दृष्टिकोण ग्रूवी में संभव है?


बेशक यह संभव है। उदाहरण के लिए groovy-lang.org/json.html है
स्मेल्म

यदि डीएसएल प्लगइन में अतिरिक्त क्लासपाथ को परिभाषित करना संभव है। फिर उस फ़ोल्डर में डालें जिसे आप classpath groovy फ़ाइल (ओं) की तरह जोड़ देंगे class GLOBAL{ def a=111; def b=222; }। फिर कोड में आप इसे एक्सेस करने में सक्षम होना चाहिएGLOBAL.a
daggett

@daggett जैसा कि मैंने लिखा था कि आप कोशिश कर रहे हैं और हमेशा मुझे त्रुटि मिली है: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'org.codehaus.groovy.runtime.InvokerHelper$1@641eff69' with class 'org.codehaus.groovy.runtime.InvokerHelper$1' to class 'javaposse.jobdsl.dsl.JobParent' यह त्रुटि आपके वर्गीय संसाधन प्रसंस्करण के दौरान होती है
rafal1337

मैं भूल गया । प्रत्येक परिभाषित चर के लिए staticउपसर्ग होना चाहिए । class GLOBAL{ static def a=111; static def b=222; }। लेकिन आपके पास त्रुटि अजीब है। क्या आप अपने द्वारा घोषित चर दिखा सकते हैं और आप इसे dsl में कैसे उपयोग कर सकते हैं।
daggett 14

1. dsl postimg.cc/TLHK5k6h का मेरा विन्यास 2. dsl प्रोसेसिंग के दौरान त्रुटि postimg.cc/21F37jDs
rafal1337

जवाबों:


3

मेरा सुझाव है कि एक संपत्ति फ़ाइल का उपयोग करें जैसा @JBaruch ने लिखा है

ip_gitlab=1.2.3.4
default_user=admin

और इसे लोड करें

Properties properties = new Properties()
File propertiesFile = new File('test.properties')
propertiesFile.withInputStream {
    properties.load(it)
}

तब आप इसका उपयोग कर सकते हैं, उदाहरण के लिए आईपी प्राप्त करें:

def ipPropertyName= 'ip_gitlab'
properties."$ipPropertyName"

2
यह अन्य पोस्ट से न्यूनतम रूप से जिम्मेदार प्रति है; आप कम से कम संदर्भित दिशानिर्देशों का पालन करना चाहते हैं और लेखक का नाम देना चाहते हैं।
मार्टिन पीटर्स

जेनकींस डीएसएल में काम नहीं करने वाली अनफॉर्नेटली, फ़ाइल को गुणों के साथ नहीं ढूँढ सकती, लेकिन यह फ़ाइल समान फ़ोल्डर है ...FATAL: test.properties (No such file or directory) java.io.FileNotFoundException: test.properties (No such file or directory)
rafal1337

@ rafal1337 क्या आपने फ़ाइल के आंशिक / पूर्ण पथ का उपयोग करने का प्रयास किया है?
user7294900 11

@ user7294900 हाँ, मैं कई रास्ते आज़मा रहा था लेकिन सकारात्मक प्रभाव के बिना।
rafal1337


2

ग्रूवी फ़ाइल बनाएं और कुछ सामान्य जानकारी और उपयोग को परिभाषित करें load

जैसे, hello.conf (ग्रूवी द्वारा लिखित)

build_name = 'hello'

build_config = [
    'git': 'your git repository',
    'build_job': ['bulid_a', 'build_b']
]

और इसके द्वारा उपयोग करें load

load 'hello.conf'

println(build_name)
for (job in build_config['build_job']) {
    build job: job
}

अच्छा लग रहा है, लेकिन जेनकींस में DSL प्लगइन काम नहीं करता है:ERROR: (pipeline.groovy, line 1) No signature of method: pipeline.load() is applicable for argument types: (java.lang.String) values: [a_test.groovy]Possible solutions: job(java.lang.String), find(), folder(java.lang.String), job(java.lang.String, groovy.lang.Closure), find(groovy.lang.Closure), wait()
rafal1337

2

अगर आप जेनकिंस का विशिष्ट उत्तर चाहते हैं: जेनकिन्स के लिए एक कॉन्फिगर फाइल प्रोवाइडर प्लगइन है।

आप प्रबंधित फ़ाइलों के माध्यम से विन्यास / संपत्तियों की फाइलों को स्टोर कर सकते हैं। प्रबंधित जेनकींस> प्रबंधित फ़ाइलों पर जाएं और एक नई फ़ाइल बनाएं। यह .groovy, .json, .xml और कई अन्य का समर्थन करता है।

आपके पास एक बार, आप उक्त फ़ाइल को एक काम के अंदर लोड कर सकते हैं, विन्यास फ़ाइल प्रदान करें चेकबॉक्स का उपयोग करके जो फ़ाइल को एक एनवी चर में स्वचालित रूप से लोड करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.