Робокопия вызывает выход (1) в случае успеха - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь вызвать этот код в jenkins

rem copy installation to output folder
set src="C:\code\EPMD\Installer\inno setup\Output"
set dst="c:/test_installs/Calibration/%version_name%"
call robocopy %src% %dst% /MIR /E /is /it

Код запускается и работает, создавая новый файл в папке назначения.

Это заставляет robocopy возвращать 1, так какДокументация заявляет.

Затем он вызывает exit 1 внутри, и Дженкинс думает, что сборка не удалась.

Как я могу "перехватить" это возвращаемое значение и не потерпеть неудачу при сборке?

1 Ответ

1 голос
/ 21 мая 2019

Команда robocopy использует код выхода (или ErrorLevel), чтобы указать результат действия копирования, где значение меньше 8 не означает что ошибки произошли; Вы можете конвертировать это ErrorLevel:

rem /* Note the changed quotation, so the quotes do no longer become part of the variable values;
rem    this does not change much in the situation at hand when you quote the values later then,
rem    but it will simplify potential concatenation of multiple variable values a lot: */
set "src=C:\code\EPMD\Installer\inno setup\Output"
set "dst=c:/test_installs/Calibration/%version_name%"
rem // Now the values become quoted; regard that the superfluous `call` has been removed:
robocopy "%src%" "%dst%" /MIR /E /IS /IT
rem // This handles the exit code (`ErrorLevel`) returned by `robocopy` properly:
if ErrorLevel 8 (exit /B 1) else (exit /B 0)

Если вы не хотите немедленно выходить из пакетного сценария после robocopy, вы можете просто сделать это:

set "src=C:\code\EPMD\Installer\inno setup\Output"
set "dst=c:/test_installs/Calibration/%version_name%"
robocopy "%src%" "%dst%" /MIR /E /IS /IT
rem // Terminate the script in case `robocopy` failed:
if ErrorLevel 8 exit /B 1
rem // Here we land when case `robocopy` succeeded;
rem Do some further actions here...
rem ...
rem // Finally explicitly force a zero exit code:
exit /B 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...