batch-file jenkins exit-code robocopy

batch file - Jenkins: simplemente robocopy en Jenkins termina marca construir con fracaso



batch-file exit-code (3)

Jenkins marca una compilación como fallida cuando el código existente de un script por lotes no es 0. Si robocopy es el último comando en su script, se tomará el código de salida robocopy.

Robocopy no se adhiere al estándar de que un código de salida distinto de 0 significa una compilación fallada. Debe evaluar el código de salida de robocopy y finalizar su script con la exit 0 o la exit 1 dependiendo del éxito de robocopy.

Eche un vistazo a los códigos de salida robocopy .

Tengo un comando de lote simple de Windows (robocopy) que devuelve cero errores pero siempre está marcado como un error en Jenkins. ¿Me gustaría saber por qué?

D: / Jenkins / jobs / Jenkins Config Backup / workspace> exit 1 Paso de compilación ''Ejecutar Windows batch command'' marcada compilación como error Finalizado: FAILURE


robocopy devuelve un mapa de bits

Para detalles, ver aquí: http://ss64.com/nt/robocopy-exit.html

En resumen: todos los códigos de salida hasta ''3'' están bien.

Este es el código de archivo por lotes que suelo usar:

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

También podría hacer un "goto" y no salir.


Actualizando esta pregunta para tuberías de jenkins: esto funciona para mí:

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") } }

Alternativamente, es posible que desee ver el complemento de operaciones de archivo