जेनकींस के निर्माण में हमेशा के लिए एक कदम शुरू करना?


17

मैं जेनकींस की तैनाती के अंत में एक शेल कमांड चला रहा हूं, जो हमेशा की स्क्रिप्ट को फिर से शुरू करने के लिए है:

npm install && forever stop app.js && forever start -a -l /var/log/forever.log app.js

जब मैं चलाता हूं कि एक उपयोगकर्ता जेनकिन्स के रूप में सब कुछ ठीक काम करता है और बिल्ड इतिहास से कंसोल आउटपुट भी मुझे बताता है कि हमेशा की स्क्रिप्ट चल रही है। हालाँकि, परिनियोजन समाप्त होने के बाद प्रक्रिया ठीक रुक जाती है और हमेशा के लिए प्रक्रिया बंद हो जाती है।

इस व्यवहार का क्या कारण है और मैं इसे कैसे ठीक कर सकता हूं?

जवाबों:


28

जेनकिंस नौकरी द्वारा सभी प्रक्रिया स्पॉन को मारता है।

इसे BUILD_IDपर्यावरण चर को किसी और चीज़ में सेट करके अक्षम किया जा सकता है:

export BUILD_ID=dontKillMe

देख https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller जानकारी के लिए


1
क्या यह 'साफ' करने का तरीका है या कुछ और सुझाया गया है?
पैट्रिक

जहाँ तक मुझे पता है, यह ProcessTreeKiller को निष्क्रिय करने का एकमात्र तरीका है
rcomblen


इससे पहले मैं मिल रहा था। [ssh-Agent] रोका गया। संकेत द्वारा मारे गए। 15. संकेत द्वारा मारे गए। इसके बाद मुझे [ssh-agent] रोक दिया गया। लेकिन यह अभी भी मारा जा रहा है :(
अमित कुमार गुप्ता

1

सवाल काफी पुराना है, लेकिन इस मामले में एक बेहतर उपाय है जो मुझे लगता है।

पोस्ट-बिल्ड स्क्रिप्ट प्लग-इन का उपयोग करें

2016 की शुरुआत से ही प्लगइन अपडेट नहीं किया गया है, लेकिन यह काम करता है और आपको पर्यावरण चर के साथ बेला नहीं है। लगता है मुझे करने के लिए एक छोटा सा।


0

नई पाइपलाइन नौकरियों में, BUILD_IDअब काम नहीं करता है। इसके बजाय, आपको JENKINS_NODE_COOKIEनौकरी खत्म होने पर जेनकिंस को अपनी प्रक्रिया को मारने से रोकने के लिए सेट करने की आवश्यकता है ।

sh 'export JENKINS_NODE_COOKIE=dontKillMe'
sh 'myProcess'

या, अधिक चुनिंदा:

sh 'JENKINS_NODE_COOKIE=dontKillMe myProcess'

ProcessTreeKiller पर विकि देखें और जेनकिंस जीरा में यह टिप्पणी करें


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