2014-10-09 12 views
5

के साथ एक सफल तैनाती के बाद टोमकैट को पुनरारंभ करना एक सफल तैनाती के बाद जेनकिंस कैसे टॉमकैट उदाहरण को पुनरारंभ कर सकता है?जेनकिंस

मैंने पहले ही बैच स्क्रिप्ट का उपयोग करने का प्रयास किया है, लेकिन जब निर्माण समाप्त हो जाता है तो टोमकैट उदाहरण मारा जाता है।

+0

आप बैच स्क्रिप्ट कब चला रहे हैं? यदि आप "पोस्ट-बिल्ड इवेंट" के बाद ऐसा करते हैं, तो इसे काम करना चाहिए। – Akhil

उत्तर

5

आपका उत्तर Jenkins ProcessTreeKiller में निहित है। एक more detailed explanation here

यह स्वच्छ वातावरण बनाए रखने के लिए बनाए गए किसी भी प्रक्रिया को मारने का एक डिज़ाइन निर्णय है। दुर्भाग्यवश इसका मतलब है कि आप निर्माण के बाद चल रहे एक प्रक्रिया (जैसे कि टोमकैट) नहीं छोड़ सकते हैं।

आप इस कार्यक्षमता विश्व स्तर पर निष्क्रिय कर सकते हैं (अनुशंसित नहीं) इस तरह जेनकींस के लॉन्च के साथ:
java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war

या आप एक प्रति-मामला आधार पर यह निष्क्रिय कर सकते हैं एक बदले माहौल चर के साथ प्रक्रिया शुरू करके:
BUILD_ID=dontKillMe ./catalina restart

कुछ लोग फिर भी रिपोर्ट है कि बदलते BUILD_ID पर्याप्त नहीं है। उन्होंने यह भी unsetting की सलाह देते हैं:
JENKINS_COOKIE
JENKINS_SERVER_COOKIE

संपादित करें:
एक और मुद्दा यह है कि खेल में हो सकता है कि जब आप दूरस्थ खोल से कनेक्ट, और कहा कि दूरदराज के खोल सत्र में एक प्रक्रिया शुरू, एक बार आप (जेनकींस) डिस्कनेक्ट हो जाते हैं, सत्र मारे जाते हैं और सत्र द्वारा उत्पन्न सभी प्रक्रियाओं को भी मार दिया जाता है। उस मुद्दे को पाने के लिए, आपको शेल सत्र से प्रक्रिया को अलग करने की आवश्यकता है।

एक ही रास्ता है:

nohup ./catalina restart &

+0

मैंने पहले ही जेनकींस प्रोसेस ट्रीकिल्लर को सफलतापूर्वक उपयोग किया है। जब मैंने इस पैरामीटर के साथ जेनकींस शुरू किया, तो मैंने देखा कि प्रक्रियाओं के व्यवहार पर कोई फर्क नहीं पड़ता। – Joachim

+0

क्या आप रिमोट शैल से कनेक्ट हो रहे हैं? रिमोट खोल को खाते में लेने के लिए जवाब संपादित किया – Slav

1

इस तरह मैं जेनकींस के माध्यम से तैनाती के बाद बिलाव को पुन: प्रारंभ कर रहा हूँ।

मेरे पास दो सर्वर DEV और QA हैं जहां मुझे तैनाती करने और टॉमकैट को पुनरारंभ करने की आवश्यकता है। मेरे पास जेनकिंस DEV सर्वर में स्थापित है।

  1. सबसे पहले आपको जेनकिंस में Post build task प्लगइन स्थापित करने की आवश्यकता है।
  2. फिर .. सर्वर जहां बिल्ला स्थापित किया है में इस स्क्रिप्ट tomcat-restart.ksh बनाने

#!/bin/bash echo "*********************Restarting Tomcat70.******************" sh /apps/apache/sss-tomcat70.ksh status echo "Trying to stop Tomcat." sh /apps/apache/sss-tomcat70.ksh stop echo "Getting Tomcat Status." sh /apps/apache/sss-tomcat70.ksh status echo "Trying to Start Tomcat" sh /apps/apache/sss-tomcat70.ksh start sleep 2 echo "Getting Tomcat Status" sh /apps/apache/sss-tomcat70.ksh status

देव सर्वर पर पुन: आरंभ करना बिलाव।

चूंकि जेनकिंस और टोमकैट उसी मशीन में स्थापित है, इसलिए मैं सीधे स्क्रिप्ट को कॉल कर रहा हूं।

जेनकींस में Add post-build action के पास जाकर Post build task चुनें और Script पाठ बॉक्स में निम्नलिखित जोड़ें: /apps/apache/tomcat-restart.ksh

क्यूए सर्वर में बिलाव को पुनः प्रारंभ।

जेनकींस के बाद से अलग सर्वर में स्थापित किया गया है, मैं सुरक्षित शैल के माध्यम से बिलाव पुनः आरंभ करने की स्क्रिप्ट बोल रहा हूँ।

जेनकींस में post-build action चयन Post build task जोड़े के पास जाकर स्क्रिप्ट पाठ बॉक्स में निम्नलिखित जोड़ें:
sshpass -p 'myPassword' ssh -tt [email protected] sudo sh /apps/apache/tomcat-restart.ksh

आप sshpass स्थापित करने के लिए अगर इसके पहले से ही स्थापित नहीं की जरूरत है।

अगर सब कुछ ठीक हो गया, तो आप अपने जेनकिन्स लॉग में ऐसा कुछ देख सकते हैं।

Running script : /apps/apache/tomcat-restart.ksh 
[workspace] $ /bin/sh -xe /tmp/hudson43653169595828207.sh 

+ /apps/apache/tomcat-restart.ksh 
*********************Restarting Tomcat70.********************* 
Tomcat v7.0 is running as process ID 3552 
*********************Trying to stop Tomcat.********************* 
Stopping Tomcat v7.0 running as process ID 3552... 
*********************Getting Tomcat Status.********************* 
Tomcat v7.0 is not running 
*********************Trying to Start Tomcat********************* 
Starting Tomcat v7.0 server... 

*********************Getting Tomcat Status********************* 
Tomcat v7.0 is running as process ID 17969 

उम्मीद है कि इससे मदद मिलती है।