में पाइप का सम्मान नहीं करता प्रतीत होता है मैं संस्करण 2.32.2 पर एक पाइपलाइन में जेनकिन्सफाइल का उपयोग कर रहा हूं।जेनकींस पाइपलाइन sh खोल कमांड
विभिन्न कारणों से मैं पोम से संस्करण स्ट्रिंग निकालना चाहता हूं। मैं उम्मीद कर रहा था कि मुझे मेवेन हेल्प प्लगइन जोड़ने और मूल्यांकन का उपयोग करने की आवश्यकता नहीं है।
मैं तुरंत पोम से बाहर निकलने के लिए थोड़ा सा अभिव्यक्ति के साथ आया जो निष्पादक पर जेनकिंस वर्कस्पेस में कमांडलाइन पर पाइप और काम करता है।
$ sed -n '/<version>/,/<version/p' pom.xml | head -1 | sed 's/[[:blank:]]*<\/*version>//g' 1.0.0-SNAPSHOT
यह शायद अनुकूलित किया जा सकता है, लेकिन मैं समझने के लिए क्यों पाइपलाइन पाइप श आदेशों पर विफल रहने के किया जा रहा है चाहता हूँ। मैंने विभिन्न स्ट्रिंग प्रारूपों के साथ खेला है और वर्तमान में एक डॉलर स्लैश स्ट्रिंग का उपयोग कर रहा हूं।
पाइपलाइन कदम कमांड स्ट्रिंग की आसान उत्पादन के लिए अनुमति देने के लिए ऐसा दिखाई देता है:
script {
def ver_script = $/sed -n '/<version>/,/<version/p' pom.xml | head -1 | sed 's/[[:blank:]]*<\/*version>//g'/$
echo "${ver_script}"
POM_VERSION = sh(script: "${ver_script}", returnStdout: true)
echo "${POM_VERSION}"
}
जब जेनकींस पाइपलाइन मैं निम्नलिखित सांत्वना उत्पादन जहां इसे में पाइप्ड आदेशों को अलग किया जा रहा है मिल में चला अलग-अलग कमांड:
[Pipeline] script
[Pipeline] {
[Pipeline] echo
sed -n '/<version>/,/<version/p' pom.xml | head -1 | sed 's/[[:blank:]]*<\/*version>//g'
[Pipeline] sh
[FRA-198-versioned-artifacts-44SD6DBQOGOI54UEF7NYE4ECARE7RMF7VQYXDPBVFOHS5CMSTFLA] Running shell script
+ sed -n /<version>/,/<version/p pom.xml
+ head -1
+ sed s/[[:blank:]]*<\/*version>//g
sed: couldn't write 89 items to stdout: Broken pipe
[Pipeline] }
[Pipeline] // script
जेनकिन्सफाइल में पाइप किए गए कमांड का सही तरीके से उपयोग करने के तरीके पर कोई मार्गदर्शन क्या है?
ऐसी कोई चीज़ नहीं है। 'ReadMavenPom' चरण का उपयोग करके मेरा जवाब देखें। – StephenKing
बढ़िया! मैं तुरंत इसका उपयोग करूंगा। धन्यवाद – mattvbv