2013-10-17 3 views
5

के कारण जेनकींस टाइमआउट मेरे पास जेनकींस के बारे में कुछ मुद्दे हैं और इसमें पावरहेल स्क्रिप्ट चल रहा है। लांग स्टोरी शॉर्ट: स्क्रिप्ट को 8x लम्बी निष्पादन समय लगता है, फिर इसे सर्वर (स्लेव) पर मैन्युअल रूप से चला रहा है (केवल कुछ मिनट लेता है)। मुझे आश्चर्य है क्यों?लंबी स्क्रिप्ट निष्पादन

स्क्रिप्ट में ऐसे कार्य हैं जो & msbuild.exe या & svn प्रतिबद्ध जैसे आदेशों का आह्वान करते हैं। मुझे पता चला कि स्क्रिप्ट उन पंक्तियों में लटका है जहां मेटोन किए गए आदेशों को निष्पादित करने से पहले। नतीजा यह है कि जेनकींस का समय समाप्त हो गया क्योंकि स्क्रिप्ट उस समय तक ले जाती है। मैं जेनकींस जॉब कॉन्फ़िगरेशन में टाइमआउट थ्रेसहोल्ड को बदल सकता हूं लेकिन मुझे नहीं लगता कि यह समस्या का समाधान है कोई त्रुटि आउटपुट या कोई जानकारी नहीं है जो इसे लंबे समय तक लेती है और मेरे पास कारण के लिए कोई और विचार नहीं है। हो सकता है कि आप में से कोई मुझे बता सके, जेनकिंस उन आदेशों को आंतरिक रूप से कैसे आमंत्रित करता है।

यह वही है जेनकींस (विंडोज़ बैच प्लगइन) करता है:

powershell -File %WORKSPACE%\ScriptHead\DeployOrRelease.ps1 
+0

"स्क्रिप्ट को सर्वर (स्लेव) पर मैन्युअल रूप से चलाने के लिए 8x लम्बे निष्पादन समय लगता है (क्या आपने उसी उपयोगकर्ता के तहत स्क्रिप्ट चलाया था जो जेनकिंस चलता है? –

+0

देर से उत्तर के लिए खेद है। नहीं, मैंने अभी अपने खाते में इसे (व्यवस्थापक अधिकार) निष्पादित किया है। लेकिन यह एक अच्छा संकेत हो सकता है! – Rosch

+0

ऐसा इसलिए है क्योंकि cmd के माध्यम से आपकी कॉलिंग पावरहेल और cmdlets में से कोई भी वापस नहीं आ रहा है .. अपना कोड पोस्ट करें, या बैच फ़ाइल बनाकर इसे स्थानीय रूप से चलाएं और इसे स्थानीय रूप से चलाएं – Cole9350

उत्तर

0

मैं अपने खुद के Powershell CI Service बना लिया है इससे पहले कि मैं पाया जेनकींस यह own such plugin है समर्थन करता है। लेकिन मेरे कार्यान्वयन में और मेरी वर्तमान नौकरियों में विन्यास हम नमूना पृथक्करण सिद्धांत नियम का पालन करते हैं: अधिक बेहतर बेहतर है। मैंने पाया कि मेरी सीआई सेवा अलग-अलग चरणों में अलग होने पर बेहतर काम करती है (त्रुटि के मामले में यह रूट कारण विश्लेषण के लिए बहुत आसान है)। एकल जिम्मेदारी सिद्धांत भी सहायक है। तो जेनकींस में हमारे पास प्री -& पोस्ट- है, अलग-अलग स्क्रिप्ट के रूप में चरणों का निर्माण और ईमेल करें। बारे में

MSBuild.exe

जहाँ तक मुझे याद है के रूप में मेरे मामले में वहाँ FileSystem रास्तों में संचालन के साथ संबंधित मुद्दों थे। इसलिए जब स्क्रिप्ट को अलग-अलग कार्यों में विभाजित/अलग किया गया था तो हमारे पास बेहतर प्रदर्शन (पैराम के अतिरिक्त चेक) थे।

0

तकनीक "विभाजन और जीत" का प्रयोग करें। आपके पास दो विकल्प हैं: अपनी स्क्रिप्ट को संशोधित करें ताकि यह प्रदर्शित हो सके कि क्या कर रहा है और यह प्रत्येक चरण के लिए कितना लेता है। ,

  • पाने कोड स्रोत
  • संकलन /, आवेदन,
  • परीक्षण चलाने का निर्माण
  • एक पैकेज बनाने,
  • भेजने: दूसरा विकल्प छोटे लिपियों जैसी कार्रवाइयां करने बनाना है पैकेज,
  • लॉग संग्रह
  • अधिसूचना भेजें।

सबसे समस्याग्रस्त आमतौर पर पहला कदम होता है: जीआईटी या एसवीएन या मर्कुरियल से स्रोत कोड प्राप्त करने के लिए या जो भी आपके पास संस्करण नियंत्रण प्रणाली है। सुनिश्चित करें कि यह चरण आपकी स्क्रिप्ट में एम्बेड नहीं है।

नौकरी चलाने के दौरान, जेनकींस आउटपुट को कैप्चर करते हैं और अपने ब्राउज़र में परिणाम प्रदर्शित करने के लिए AJAX का उपयोग करते हैं। स्क्रिप्ट में सुनिश्चित करें कि आप प्रत्येक चरण या कई चरणों के लिए मानक आउटपुट फ्लश करें। कुछ भाषाएं मानक आउटपुट कैश करती हैं ताकि आप केवल अंत में परिणाम देख सकें।

इसके अलावा आप लॉग फाइलें बना सकते हैं जो पुराने रनों के लिए गतिविधि की स्थिति को संग्रहित और सत्यापित करने में सहायक हो सकती हैं।जेनकिन्स का उपयोग करके मेरे अनुभव से 10 चरणों के साथ आपको एक विशेष एप्लिकेशन बनाना होगा जो "रोबोट फ्रेमवर्क" जैसे कई चरणों को चला सके।

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