2016-03-30 8 views
10

मैं आईओएस चेकआउट-बिल्ड-टेस्ट-डिप्लॉय पाइपलाइन निष्पादित करने के लिए जेनकींस पाइपलाइन प्लगइन का उपयोग कर रहा हूं।जेनकींस पाइपलाइन प्लगइन: खोलें और पार्स आउटपुट निष्पादित करें

एक चरण में यह जांचना शामिल है कि iDevice वास्तव में कनेक्ट है या नहीं, अन्यथा बाकी चरणों को निष्पादित नहीं किया जाएगा)।

मैं एक खोल कमांड idevice_id -l (libimobiledevice से) निष्पादित करना चाहता हूं जो कनेक्टेड डिवाइस की डिवाइस आईडी मुद्रित करेगा, या कुछ भी कनेक्ट होने पर विफल हो जाएगा।

तो चरणों मैं उन्हें कल्पना के रूप में, होगा:

  • आदेश निष्पादित sh "/usr/local/bin/idevice_id -l"
  • उत्पादन पार्स किसी भी तरह
  • असफल इस आदेश कुछ भी वापस नहीं करता है।

मैंने अधिकांश आधिकारिक दस्तावेज़ पढ़े हैं, लेकिन एक खाली खींचा है। मैं sh चरण के आउटपुट को कैसे पार्स करूं? यदि मैं गलत तरीके से इस पर आ रहा हूं, तो कोई अन्य सुझाव स्वागत है।

उत्तर

31

साथ काम असफल हो सकता है एक फ़ाइल में उत्पादन अनुप्रेषित और फ़ाइल

पढ़ने के लिए है के रूप में this answer में mentionned, Pipeline: Nodes and Processes के संस्करण 2.4 के रूप में आप का उपयोग कर सकते हैं:

def out = sh script: '/usr/local/bin/idevice_id -l', returnStdout: true 
2

आधिकारिक विधि तो आउटपुट फ़ाइल खाली है, आप पाइपलाइन स्क्रिप्ट आदेश error "no device connected"

Example on github

+0

शानदार! यह मेरे लिए ठीक काम करता है। 'sh ('/ usr/local/bin/idevice_id -l> DEVICE_ID'); डिवाइसआईडी = रीडफाइल ('GIT_COMMIT') ' – Vish

+0

[जेनकिन्स -26133] (https://issues.jenkins-ci.org/browse/JENKINS-26133) वैसे भी। –

+2

यह "आधिकारिक" विधि/वर्कअराउंड नहीं है, अद्यतन विधि के लिए [यह उत्तर] (http://stackoverflow.com/a/39102404/702954) देखें। – Pom12

संबंधित मुद्दे