2011-03-07 11 views
12

मेरे पास मेरे सामने एक बड़ा काम है ... कई हडसन नौकरियों की कॉन्फ़िगरेशन को संशोधित करना। मैं चाहता हूं कि इसे कमांड लाइन से करना है। लेकिन मेरे अनुभव के अनुसार, हडसन कॉन्फ़िगरेशन को तब तक नहीं पढ़ेगा जब तक कि आप इसे "डिस्क से कॉन्फ़िगरेशन पुनः लोड करने" के लिए मजबूर नहीं करते।क्या किसी को पता है कि बिना रीस्टार्ट किए हडसन कॉन्फ़िगरेशन को फिर से लोड करना है?

मैं सिर्फ छोटे बदलाव के लिए हडसन को पुनरारंभ नहीं करना चाहता ... जैसे अपाचे में "पुनः लोड" करना। पता नहीं कि जावा कोड कैसे पढ़ा जाए, लेकिन मैं अनुमान लगा रहा हूं कि कॉन्फ़िगरेशन परिवर्तनों को सहेजने के बाद मैं जो कुछ ढूंढ रहा हूं वह झूठ में है।

अग्रिम धन्यवाद, इस्माइल

उत्तर

7

हडसन/जेनकींस रखती है यह स्मृति में क्रम विन्यास है, और केवल स्टार्टअप या जब में "डिस्क से फिर से लोड विन्यास" आप इसे पुन: लोड।

हालांकि, डिस्क से पुनः लोड विन्यास नहीं पुन: प्रारंभ करने के लिए, बस एक फिर से पढ़ने के विन्यास की है।

यह आपके सभी विकल्प, पुनः लोड या पुनरारंभ करें।

इसे अलग-अलग काम करने के लिए हैकिंग करना एक बड़ा काम होगा, और यदि आप अभी तक जावा कोड पढ़ नहीं सकते हैं, तो मैं आपको इसे लिखने की सलाह नहीं दूंगा। प्रभावी रूप से आपको मुख्य परियोजना से भी फोर्क करना होगा, इसलिए अपडेट संगत नहीं होंगे।

यदि आपको किसी स्क्रिप्ट के माध्यम से सभी अपडेट करने की आवश्यकता है, और फिर कॉन्फ़िगर को स्वत: पुनः लोड करें, तो इसे करने के लिए hudson_cli.jar का उपयोग करें।

+1

इनपुट @Slomojo के लिए आपको बहुत बहुत धन्यवाद। इसके बजाय मैं जो सोच रहा हूं वह एक छोटा खोल या पर्ल स्क्रिप्ट तैयार करता है जो वेब इंटरफ़ेस से प्रत्येक कॉन्फ़िगरेशन पर क्लिक करने के उबाऊ कार्य करने के बजाय मेरे लिए कई कॉन्फ़िगरेशन में परिवर्तन करेगा। फिर बाद में, मैं बस " डिस्क से कॉन्फ़िगरेशन को फिर से लोड करें "कमांड के माध्यम से curl http: //my_hudson_address_here/hudson/reload'... मुझे पता है कि एक हडसन-क्ली.जर है लेकिन मुझे लगता है कि यह मेरे अंत में नहीं चल रहा है इसलिए यह छोटा" सुरक्षित हैक "मेरा यह करेगा। – icasimpan

+1

ओह, मैं वास्तव में पूछूंगा कि क्यों hudson_cli काम नहीं कर रहा है ... यह इसके लिए एक आदर्श उपयोग केस है।- कोड बेस को संशोधित करना क्योंकि आप यह नहीं समझ सकते कि hudson_cli जैसे टूल को कॉन्फ़िगर कैसे करें आपके लिए अलार्म घंटी सेट करना चाहिए। एक और प्रश्न पोस्ट करें यदि आप hudson_cli नहीं चला सकते हैं, और यहां एक लिंक पोस्ट कर सकते हैं, तो मुझे यकीन है कि एसओ सामूहिक रूप से इसे आपके लिए चल सकता है। – ocodo

13

यहाँ पुन: प्रारंभ या ग्रूवी के उपयोग के साथ पूरा विन्यास को पुन: लोड के बिना जेनकींस में नौकरी को फिर से लोड करने के लिए कैसे है। आप स्क्रिप्ट को आसानी से संशोधित भी कर सकते हैं और कुछ विशिष्ट या सभी जेनकींस नौकरियों को फिर से शुरू किए बिना पुनः लोड कर सकते हैं।

जेनकिंस यूआई या सीएलआई पर स्क्रिप्ट चलाने की अनुमति देता है।

यूआई: उदाहरण के लिए, अपने जेनकींस स्क्रिप्ट पेज में निम्न स्क्रिप्ट कॉपी http://www.mydomain.com/jenkins/script

import java.io.InputStream; 
import java.io.FileInputStream 
import java.io.File; 
import javax.xml.transform.stream.StreamSource 

def hudson = hudson.model.Hudson.instance; 

//to get a single job 
//def job = hudson.model.Hudson.instance.getItem('my-job'); 

for(job in hudson.model.Hudson.instance.items) { 

    if (job.name == "my-job") { 

     def configXMLFile = job.getConfigFile(); 
     def file = configXMLFile.getFile(); 

     InputStream is = new FileInputStream(file); 

     job.updateByXml(new StreamSource(is)); 
     job.save();   
    }  
} 

CLI: आप एक फाइल में ऊपर स्क्रिप्ट बचाने के लिए और एक ग्रूवी के रूप में दूर से CLI पर निष्पादित कर सकते हैं स्क्रिप्ट:

java -jar jenkins-cli.jar -s http://www.mydomain.com/jenkins groovy reload-job.groovy 

संदर्भ:
https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+CLI (CLI) http://javadoc.jenkins-ci.org/hudson (एपीआई)

+0

CLI पर है, तो आप सिर्फ एक्सएमएल के साथ और 'अपडेट- काम' आदेश का उपयोग कर सकता है? (जिसे आप गेट-जॉब या सिर्फ एक्सएमएल एपीआई का उपयोग कर सकते हैं? – inger

+0

अद्यतन-जॉब कमांड स्क्रैच से नौकरी को पुनः लोड नहीं करता है, इस प्रकार कभी-कभी यह खुले मुद्दों को हल नहीं करता है –

5
http://[jenkins-server]/reload 

Administering Jenkins से लिया।

+4

[समतुल्य groovy] (https: // github। कॉम/जेनकिंसी/जेनकींस/ब्लोब/c63abe3e8cfcb71d27458bebe7752d54edaa2d49/कोर/src/main/जावा/जेनकींस/मॉडल/जेनकिन्स.जावा # एल 3 9 52-एल 3 9 74) 'जेनकिन्स.inस्टेंस.रलोड() ' – phs

+1

है [javadoc] (http: // javadoc.jenkins-ci.org/jenkins/model/Jenkins.html#reload()) यह सुझाव देता है कि 'जेनकिन्स.instance.doReload() 'बेहतर है – jjc

संबंधित मुद्दे

 संबंधित मुद्दे