मैं एक जेनकींस पाइपलाइन काम है, जिसमें मैं एक bash स्क्रिप्ट नामित setup.sh जो की तरह दिखता है के साथ अपने वातावरण कॉन्फ़िगर है में स्क्रिप्ट पार्टी की योजना बनाई:चर गुजर एक जेनकींस पाइपलाइन काम
#!/bin/bash
export ARCH=$1
echo "architecture = " ${ARCH}
जेनकींस पाइपलाइन स्क्रिप्ट में, Icall setup.sh स्क्रिप्ट के साथ:
def lib_arch='linux-ubuntu-14.04-x86_64-gcc4.8.4'
sh ". /opt/setup.sh ${lib_arch}"
दुर्भाग्य से ऐसा लगता है कि नहीं चर setup.sh स्क्रिप्ट को पारित कर दिया है, और गूंज $ {ARCH} कोई रिक्त स्ट्रिंग वापसी! मैंने इसके बजाय करने की कोशिश की: sh "स्रोत /opt/setup.sh $ {lib_arch}" और यह "स्रोत नहीं मिला" संदेश के साथ-साथ विफल रहता है। मैं भी
#!/bin/sh
को मेरी स्क्रिप्ट की पहली पंक्ति को बदलने की कोशिश की, लेकिन यह मदद नहीं करता है। तो मैं जेनकींस पाइपलाइन स्क्रिप्ट में अपनी बैश स्क्रिप्ट में पैरामीटर कैसे पास कर सकता हूं? आपकी सहायता के लिए धन्यवाद।
अद्यतन: एक समाधान के इस सूत्र में बर्ट जनवरी Schrijve द्वारा sugggested था (देखें नीचे):
sh "bash -c \" source /opt/setup.sh ${lib_arch}\""
मैं अपने सुझाव की कोशिश की और यह विफल रहता है। मैंने बस ऐसा करने की भी कोशिश की: sh "। /opt/setup.sh bla"। जाहिर है, पैरामीटर शेल स्क्रिप्ट को पास नहीं किया गया है, क्योंकि $ # रिटर्न 0 है, जबकि स्क्रिप्ट कंसोल में, मुझे [testh] रनिंग शेल स्क्रिप्ट + मिलती है। /opt/setup.sh linux-ubuntu-14.04-x86_64-gcc4.8.4 –
यह अजीब है। मैंने एक छोटा सा उदाहरण जोड़ा है और इसे जेनकींस 2.7.3 पर परीक्षण किया है। आप किस संस्करण पर हैं? –
मैं इस युद्ध संस्करण का उपयोग कर रहा हूँ: 2.19.1। मेरा मानना है कि यहां कुछ अजीब बात है। अपनी पाइपलाइन स्क्रिप्ट में, आप वह नहीं कर रहे हैं जिसे मैं प्राप्त करने की कोशिश कर रहा हूं। मेरे मामले में, मैं एक वैरिएबल वैल्यू को डिफ (जैसे आप) के साथ परिभाषित एक वैरिएबल वैल्यू देने की कोशिश कर रहा हूं। जैसा कि मैंने लिखा है, अगर मैं sh "।/Opt/setup।sh bla ", और यदि मेरी स्क्रिप्ट में मैं $ 1 गूंजने का प्रयास करता हूं, तो मैं स्पष्ट रूप से देख सकता हूं कि पैरामीटर" ब्लै "स्क्रिप्ट को नहीं दिया गया है। –