我在 CI 服务器上设置了 hudson,并使用 robocopy 将文件复制到 Web 服务器。
我在退出代码方面遇到了一些问题。Robocopy 报告了太多不同的成功和失败退出代码,而 hudson 无法理解它们,因此会将除 0 以外的任何代码都报告为失败。
我以为我已经设法通过调用 robocopy 两次执行相同的任务来解决这个问题。因此,第一次它执行任务并返回非零退出代码,而下一次它没有任何可复制的内容,因此返回 0。当我单击 Hudson 上的构建按钮时,此方法有效,但由于某种原因,当它监视 git 存储库时无效。
所以我的问题是,我可以告诉 hudson 有关各个退出代码以便构建成功吗?或者我必须围绕 robocopy 创建一个包装器来提供 hudson 可以理解的退出代码?
干杯
汤姆
更新 在 Peter 回答之后,我在 robocopy 脚本的末尾添加了以下语句
if ERRORLEVEL 1 set ERRORLEVEL=0
if ERRORLEVEL 2 set ERRORLEVEL=0
if ERRORLEVEL 3 set ERRORLEVEL=0
if ERRORLEVEL 5 set ERRORLEVEL=0
if ERRORLEVEL 6 set ERRORLEVEL=0
if ERRORLEVEL 7 set ERRORLEVEL=0
对于 robocopy 来说,任何低于 8 的值都被视为成功,这会将错误代码转换为 hudson 并报告成功。我想我可以在某个时候重构它。
谢谢你的帮助,彼得!
更新
根据 Peter 的建议重新考虑了这一点:
如果 %ERRORLEVEL% LEQ 7 设置 ERRORLEVEL=0
答案1
这相当简单。你必须翻译 Hudson 的错误代码。我在 robocopy 之后使用了以下语句
if ERRORLEVEL 1 set ERRORLEVEL=0
我搜索了 robocopy 的错误代码,找到了以下页面。您也可以在 Microsoft 页面上搜索错误代码。
http://www.mysidenotes.com/2008/02/15/robocopy-errorlevel-return-codes-found-in-robocopydoc/