2016-05-04 10 views
7

क्या कोई अंतर्निहित चर है जो वर्तमान में निष्पादन निर्माण के पाठ तक पहुंच प्रदान करता है?जेनकिन्सफाइल बिल्ड लॉग

मैंने currentBuild.log, currentBuild.buildLog जैसे किसी भी भाग्य का उपयोग करने की कोशिश की लेकिन बिना किसी किस्मत के।

उत्तर

2

वास्तव में यह currentBuild.rawBuild.log या बेहतर (बहिष्कृत नहीं) currentBuild.rawBuild.getLog(100) (पिछले 100 लाइनों के लिए) का उपयोग संभव है, संदर्भ: http://javadoc.jenkins-ci.org/hudson/model/Run.html#getLog-int-

+1

1.652 मल्टीब्रैंच पाइपलाइन के साथ, यह काम नहीं करता है :('org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: स्क्रिप्ट्स को विधि hudson.model.Run getLog int' और my.jenkins.site/scriptApproval/ का उपयोग करने की अनुमति नहीं है पेज यह भी नहीं दिखाता है। मैं अभी भी इस परेशानी की समस्या के लिए खुद को उत्तर देने की तलाश कर रहा हूं –

+0

@ जेसन डीएरेट - क्या आपने वर्तमान प्लगइन संस्करणों के साथ वर्तमान जेनकींस एलटीएस पर यह कोशिश की है? – BitwiseMan

+0

इस उत्तर को खोजने के लिए मुझे एक लंबा समय लगा। यह बताने का एक तरीका प्रदान करता है कि कोई निर्माण निरस्त किया गया था, जिसे अभी तक स्पष्ट रूप से प्रदान नहीं किया गया है - https://issues.jenkins-ci.org/browse/JENKINS-28822 –

2

वर्तमान में नहीं। (currentBuild के गुण स्निपेट जेनरेटर »वैश्विक चर वैसे तहत प्रलेखित रहे हैं।)

यह सकता है लागू किया जाना, काफी आसानी से है, हालांकि यह अच्छी तरह से स्केल नहीं होगा विशाल बनाता है के साथ। JENKINS-28119 आपके अंतर्निहित अनुरोध का अनुमान लगाने के लिए एक और अधिक स्केलेबल समाधान प्रदान करेगा।

+0

असल में मैं लॉग सभी तैनात कलाकृतियों को पुनः प्राप्त करने ('mvn स्वच्छ deploy') और स्थिति में सर्वर परीक्षण असफल में मैं गठजोड़ रिपोजिटरी से उन कलाकृतियों निकालना चाहते पार्स करने के लिए कोशिश कर रहा हूँ, मेरे लिए वर्तमान में सबसे आसान तरीका है पार्स करने के लिए है * अपलोड किए गए लॉग: http ..... * टेक्स्ट और HTTP उन पर हटा दें। –

+0

यदि आप अपने नियोजित कलाकृतियों को कुछ चर के साथ वर्जन कर रहे हैं, जिसे आप एक्सेस कर सकते हैं, जैसे कि आपके बिल्ड नंबर या आपके गिट प्रतिबद्धता, तो आप वेरिएबल का उपयोग करके आर्टिफैक्ट नामों का निर्माण करके उन्हें हटा सकते हैं। यदि आप सैकड़ों कलाकृतियों को प्रकाशित कर रहे हैं जो बहुत अच्छी तरह से काम नहीं करेंगे हालांकि –

+0

फिर बस 'sh' mvn स्वच्छ तैनाती | टी लॉग '; def logs = readfile 'logs' पूरी तरह से _build_ के लॉग तक पहुंचने का प्रयास किए बिना। –

3

मैं लॉग का विश्लेषण करने के लिए एक समाधान के लिए एक बहुत खोजा गया।

  • उपयोग rawBuild, ठीक नहीं था, क्योंकि मैं चरणों में
  • उपयोग tee अतिरिक्त अनुमोदन के बिना एक खिलौने के डिब्बे में मेरी आलेख निष्पादित करना चाहते हैं, कि मैं का विश्लेषण करने के लिए ठीक नहीं था चाहते हैं, क्योंकि मैं नहीं करना चाहते

      : पिछले चरणों को संशोधित, न ही मैं रैम में मेरी पूरी लॉग नहीं करना चाहते हैं (और दुर्भाग्य से मैं एक Windows मशीन पर कि जरूरत)

    मैं एक समाधान जेसी Glicks जवाब से प्रेरित पाया

  • my.jenkins.url/पाइपलाइन-वाक्य रचना के तहत/वैश्विक आप देख सकते हैं, कि manager -variable आप manager.logContains(regexp) या manager.getLogMatcher(regexp)
  • तो अगर आप सिर्फ जाँच करना चाहते हैं, जो आपके लॉग स्ट्रिंग का उपयोग करके लॉग का विश्लेषण करने की अनुमति देता है myTestString तुम सिर्फ manager.logContains('.*myTestString.*')
  • कॉल कर सकते हैं जब आप पहली बार मिलान लाइन से कुछ जानकारी आप manager.getLogMatcher(regexp)

उपयोग कर सकते हैं प्राप्त करना चाहते हैं दुर्भाग्य से मैं पूरे लॉग (केवल getLogMatcher रिटर्न पहले मिलान लाइन Matcher विश्लेषण करने के लिए कोई रास्ता नहीं मिला तो)। तो मैं वर्तमान में उदाहरण के लिए कोई रास्ता नहीं देखता गिनें कि लॉग फ़ाइल में कितनी बार एक विशेष स्ट्रिंग होती है।

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