【发布时间】:2019-01-15 19:21:19
【问题描述】:
我只是在 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 总是认为它是一个错误的状态并且构建失败。
有人可以告诉我如何告诉 Jenkins 在使用 Windows 批处理执行时退出 1000 是成功的吗?
【问题讨论】:
-
原来这个问题不仅仅出在 7zip 命令行上。我使用执行 Windows 批处理发出的所有命令都以退出 1000 结束,即使一切似乎都很好。唯一常见的是我使用 sexec 并在远程服务器上执行它们。