जेनकिन्स में पोस्ट बिल्ड के बाद शेल स्क्रिप्ट को निष्पादित करें


81

मैं शेल स्क्रिप्ट को निष्पादित करने की कोशिश कर रहा हूं यदि या तो बिल्ड पास या जेनकिंस में पोस्ट-बिल्ड के बाद विफल हो जाता है। मैं लक्ष्य बनाने के अलावा कुछ शेल स्क्रिप्ट निष्पादित करने के लिए पोस्ट बिल्ड में यह विकल्प नहीं देख सकता।

जवाबों:


67

पोस्ट बिल्ड टास्क प्लगइन के साथ बहुत आसानी से किया जाता है ।

जेनकिंस - "पोस्ट बिल्ड टास्क" विकल्प


48
मैं केवल स्क्रिप्ट चलाने के बजाय PostBuildScript प्लगइन की सिफारिश करूंगा । यदि आपको लॉग आउटपुट पर सशर्त करने की आवश्यकता नहीं है, तो यह सरल और अधिक मजबूत है। उदाहरण के लिए, यह पोस्ट-बिल्ड कार्यों में किसी भी बिल्ड चरणों को चलाने की अनुमति देता है।
Sampo

9
यह भी ध्यान दें कि पोस्ट बिल्ड टास्क प्लगइन सशर्त परीक्षण करने के लिए पूरे कंसोल आउटपुट को स्मृति में रखता है ... जो कि बहुत सारी मेमोरी ले सकता है यदि सैकड़ों नौकरियां बहुत अधिक उत्पादन का उत्पादन करती हैं ... हमारा जेनकींस मास्टर बस दुर्घटनाग्रस्त हो गया इस प्लगइन के लिए ...
ग्रेईई

1
PostBuildScript प्लगइन को निलंबित कर दिया गया है।
उपिन

@ यूपीएन क्या आपको यह साबित करने के लिए एक लिंक प्रदान कर सकता है?
वादिम कोटोव

10

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

if (manager.build.result.isWorseThan(hudson.model.Result.SUCCESS)) {
  item = hudson.model.Hudson.instance.getItem("PROJECTNAMEHERE")
  lastStableBuild = item.getLastStableBuild()
  lastStableDate = lastStableBuild.getTime()
  formattedLastStableDate = lastStableDate.format("MM/dd/yyyy h:mm:ss a")
  now = new Date()
  formattedNow = now.format("MM/dd/yyyy h:mm:ss a")
  command = ['/appframe/jenkins/appframework/fob.ksh', "${formattedLastStableDate}", "${formattedNow}"]
  manager.listener.logger.println "FOB Command: ${command}"
  manager.listener.logger.println command.execute().text
}

(हमारी कमान अंतिम स्थिर बिल्ड तिथि और वर्तमान समय को मापदंडों के रूप में लेती है ताकि यह जांच हो सके कि किसने निर्माण को तोड़ दिया है, लेकिन आप जो कुछ भी आदेश दे सकते हैं उसे उसी तरह से चला सकते हैं)


6

अगर मैं आपके प्रश्न को सही से पढ़ रहा हूं, तो आप पोस्ट बिल्ड एक्शन भाग में स्क्रिप्ट चलाना चाहते हैं।

मैं स्वयं बिल्ड के बाद चलने वाली कलाकृतियों और प्रकाशित परीक्षा परिणामों के बाद चलने के लिए PostBuildScript प्लगइन का उपयोग करता हूं git clean -fxd। मेरे जेनकिंस दासों में SSD डिस्क हैं, इसलिए मेरे पास कार्यक्षेत्र में उत्पन्न फ़ाइलों को रखने की जगह नहीं है।


3

आपको बैच टास्क प्लगइन के साथ ऐसा करने में सक्षम होना चाहिए ।

  1. प्रोजेक्ट में बैच टास्क बनाएं।
  2. एक ही प्रोजेक्ट का चयन करके "बैच के कार्यों को आमंत्रित करें" पोस्ट-बिल्ड विकल्प जोड़ें।

एक विकल्प पोस्ट बिल्ड टास्क प्लगइन भी हो सकता है ।


1

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


यदि स्क्रिप्ट मेरे कार्य के तहत मेरे पास निष्पादन योग्य शेल स्क्रिप्ट के आधार पर विशेष रूप से विफल हो जाती है तो मैं स्क्रिप्ट को कैसे ट्रिगर कर सकता हूं? धन्यवाद
TopGun

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