我只是在Windows Server 2016上设置了一个新的Jenkins系统。
我的构建步骤之一是执行与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 shell进行的。
当作品的输出看起来不错时,为什么会失败?出口1000从哪里来?
更新:结果表明退出通道1000来自sexec且正常。我已经在批处理文件中尝试了几种方法来执行处理,但是Jenkins始终认为这是一种错误状态,并且构建失败。
有人可以告诉我如何使用Windows Batch Execution告诉Jenkins退出1000成功吗?
答案 0 :(得分:0)
最后想出了一种方法来完成这项工作。
我将在jenkins中直接执行sexec改为从Jenkins调用批处理文件。
然后在批处理文件中输入代码:
sexec -cmd=%1
if errorlevel 1000 goto success
goto end
:success
EXIT 0
:end
当sexec返回1000时,会将错误级别设置为0