batch file जेनकिंस-जेनकिंस में बस रोबोकोपी विफलता के साथ अंक बनाते हैं




batch-file jenkins (3)

रोबोकॉपी थोड़ा नक्शा देता है

विवरण के लिए यहां देखें: http://ss64.com/nt/robocopy-exit.html

संक्षेप में: '3' तक सभी निकास कोड ठीक हैं।

यह बैच फाइल कोड है जो मैं आमतौर पर उपयोग करता हूं:

set SOURCE= ...
set DESTINATION= ...

robocopy /MIR /LOG:example.robocopy.log.txt %SOURCE% %DESTINATION%
@echo robocopy exit code: %ERRORLEVEL%
@if %ERRORLEVEL% GTR 3 ( echo robocopy ERROR )
@if %ERRORLEVEL% GTR 3 ( exit %ERRORLEVEL% )
@set ERRORLEVEL=0

आप "गोटो" भी कर सकते हैं और बाहर निकलने के लिए नहीं।

मेरे पास बस विंडोज़ बैच कमांड (रोबोकॉपी) है जो शून्य त्रुटियों को रिटर्न करता है लेकिन हमेशा जेनकिंस में विफलता के रूप में चिह्नित होता है मुझे जानना है क्यों?

डी: \ जेनकिंस \ जॉब \ जेनकंस कॉन्फ़िग बैकअप \ वर्कस्पेस> बाहर निकलें 1 कदम बनाएँ 'विंडोज बैच कमांड निष्पादित करें' को असफलता के रूप में निर्मित चिह्नित किया गया है समाप्त: विफलता


जेनकिंस पाइपलाइनों के लिए इस प्रश्न को अद्यतन करना - यह मेरे लिए काम करता है:

    def robocopy(cmd)
    {
        // robocopy uses non-zero exit code even on success, status below 3 is fine
        def status = bat returnStatus: true, script: "ROBOCOPY ${cmd}"
        println "ROBOCOPY returned ${status}"
        if (status < 0 || status > 3)
        {
            error("ROBOCOPY failed")
        }
    }

वैकल्पिक रूप से, आप फ़ाइल संचालन प्लगिन को देखना चाह सकते हैं


जेनकिंस एक बिल्डर के रूप में चिह्नित करता है जब एक बैच स्क्रिप्ट का मौजूद कोड 0 नहीं होता है। अगर रोबोकॉपी आपकी स्क्रिप्ट में अंतिम आज्ञा है, रोबोकोपी निकास कोड लिया जाएगा।

रोबोकॉपी मानक का पालन नहीं करता है कि एक अन्य बाहर निकलने का कोड फिर 0 असफल बिल्ड का मतलब है। आपको रोबोकोपी निकास कोड का मूल्यांकन करने और रोबोकॉपी की सफलता के आधार पर exit 1 exit 0 या exit 1 exit 0 साथ अपनी स्क्रिप्ट समाप्त करने की आवश्यकता है।

रोबोकोपी निकास कोड पर एक नज़र डालें







robocopy