Командная строка выполнения Jenkins Windows BitVise sexec завершается неудачно с выходом 1000 в конце - PullRequest
0 голосов
/ 15 января 2019

Я просто настраиваю новую систему Jenkins на Windows server 2016.

Одним из моих шагов сборки является выполнение командного файла, который я использовал с FinalBuilder.

Этот пакетный файл создает резервную копию 7z моего существующего веб-сайта, прежде чем перезаписать его.

Вот моя команда в Jenkins (некоторые параметры явно изменены для конфиденциальности в этом посте):

sexec myuser@myserver.cloudapp.net -pw=mypassword -cmd="bvBackup C:\inetpub\SiteName SiteName"

Вот содержимое bvBackup.bat:

cd %1
for /f "tokens=2-8 delims=.:/ " %%a in ("%date% %time%") do set DateNtime=%%c-%%a-%%b_%%d-%%e-%%f
7z a -r ..\%2Backup\%2_%DateNtime% *.*

По сути, он просто архивирует файлы в архив с текущей датой и временем в имени.

Вот несколько последних строк вывода с консоли Jenkins:

12:14:42 Compressing  site\bin\UserAuthorization.dll
12:14:42 Compressing  site\bin\WebGrease.dll
12:14:42 Compressing  site\bin\zlib1.dll
12:14:42 
12:14:42 Everything is Ok
12:14:42 
12:14:42 D:\Jenkins\workspace\MyProjectName - Staging>exit 1000 
12:14:42 Build step 'Execute Windows batch command' marked build as failure
12:14:42 Finished: FAILURE

То, что я пытаюсь выяснить, это то, откуда идет выход 100. Это не часть моего командного файла. 7zip говорит, что все в порядке.

Путь на D: путь к рабочей папке jenkins. Все остальное от нашего промежуточного сервера, где сжатие происходит через оболочку sexec ssh.

Почему это не получается, когда вывод с работы, кажется, в порядке? Откуда идет выход 1000?

Обновление: Оказывается, выход 1000 исходит от sexec и является нормальным. Я пробовал несколько вещей в моем пакетном файле, который выполняется, чтобы справиться с ним, но Дженкинс всегда полагает, что это плохое состояние, и сбой сборки.

Может кто-нибудь сказать мне, как сказать Дженкинсу, что выход 1000 - это успех при использовании пакетного выполнения Windows?

1 Ответ

0 голосов
/ 18 января 2019

Наконец-то придумали способ сделать эту работу.

Я изменил свое прямое исполнение sexec в jenkins, чтобы оно стало вызовом пакетного файла от Jenkins.

Тогда в командном файле у меня есть код:

sexec -cmd=%1
if errorlevel 1000 goto success
goto end
:success
EXIT 0
:end

Устанавливает уровень ошибки на 0, когда sexec возвращает 1000

...