2017-02-24 16 views
6

निरपेक्ष जेनकींस पाइप लाइन/ग्रूवी noob यहाँ, मैं एक मंच हैजेनकींस पाइपलाइन बुलबुला चरण विफल

stage('Building and Deploying'){ 
    def build = new Build() 
    build.deploy() 
} 

जो साझा lib उपयोग कर रहा है, Build.groovy के स्रोत यहाँ है:

def deploy(branch='master', repo='xxx'){ 
    if (env.BRANCH_NAME.trim() == branch) { 
     def script = libraryResource 'build/package_indexes/python/build_push.sh' 
     // TODO: Test out http://stackoverflow.com/questions/40965725/jenkins-pipeline-cps-global-lib-resource-file-for-shell-script-purpose/40994132#40994132 
     env.PYPI_REPO = repo 
     sh script 
    }else { 
     echo "Not pushing to repo because branch is: "+env.BRANCH_NAME.trim()+" and not "+branch 
    } 
} 

समस्या तब होती है जब रिमोट रेपो (नीचे देखें) में निर्माण को धक्का देने में विफल रहता है, चरण अभी भी सफल दिख रहा है।

running upload 
Submitting dist/xxx-0.0.7.tar.gz to https://xxx.jfrog.io/xxx/api/pypi/grabone-pypi-local 
Upload failed (403): Forbidden 
... 
Finished: SUCCESS 

मैं शैल स्क्रिप्ट के निकास कोड को कैसे बबल कर सकता हूं और मंच को विफल कर सकता हूं?

उत्तर

0

बस फिर इस सवाल पर ठोकर खाई, यह पता चला एक अजगर संस्करण समस्या हो, मैं अजगर के सही संस्करण याद नहीं कर सकते, लेकिन यह setuptools के भीतर एक समस्या, IIRC उन्नयन अजगर यह तय 2.7.1x गया था।

15

sh चरण वही स्थिति कोड देता है जो आपके वास्तविक sh कमांड (इस मामले में आपकी स्क्रिप्ट) लौटाता है। sh documentation से:

आम तौर पर, एक स्क्रिप्ट जो गैर-शून्य स्थिति कोड से निकलती है, एक अपवाद के साथ चरण विफल हो जाएगी।

आपको यह सुनिश्चित करना होगा कि आपकी स्क्रिप्ट विफल होने पर गैर-शून्य स्थिति कोड लौटाए। यदि आप सुनिश्चित नहीं हैं कि आपकी स्क्रिप्ट क्या लौटाती है, तो आप returnStatussh चरण के पैरामीटर का उपयोग कर रिटर्न वैल्यू देख सकते हैं, जो बिल्ड में विफल नहीं होगा लेकिन स्थिति कोड वापस कर देगा। E.g:

def statusCode = sh script:script, returnStatus:true 

फिर आप अपने वर्तमान निर्माण के परिणाम को सेट करने के लिए इस स्थिति कोड का उपयोग कर सकते हैं।

आप उपयोग कर सकते हैं:

  • currentBuild.result = 'FAILURE' या currentBuild.result = 'UNSTABLE' क्रमशः के रूप में लाल/पीले कदम चिह्नित करने के लिए। इस मामले में निर्माण अभी भी अगले चरणों को संसाधित करेगा।
  • error "Your error message" यदि आप निर्माण विफल करना चाहते हैं और तत्काल बाहर निकलना चाहते हैं।
+0

धन्यवाद, इसलिए एक बार मेरे पास स्टेटस कोड है, तो क्या मुझे इसे 'तैनाती' फ़ंक्शन में वापस करने की आवश्यकता है? –

+0

मैंने उदाहरणों को जोड़ा है कि आप बिल्ड को असफल के रूप में कैसे चिह्नित कर सकते हैं। – Pom12

+0

कूल धन्यवाद, मुझे एक अलग समस्या है अब आप एक नज़र देख सकते हैं? http://stackoverflow.com/questions/42475073/jenkins-pipeline-sh-step-not-returning- अलग-status-code –

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