小编典典

Jenkins在外部可执行文件上通过或失败

jenkins

作为构建过程的一部分,我编写了一个EXE,它将数据库更改推送到登台DB。

这个过程有时会遇到错误,如果是这样,我希望构建失败。如何添加EXE作为构建步骤,以便在失败(我可能会捕获到异常)时使构建失败并记录一些详细信息(类似于NUNit显示失败的方式)?

我还希望该exe记录其他一些详细信息(例如更改内容-构建通过还是失败)。是否有任何有关如何执行此操作的文档?

我正在使用MSBuild,并且可以完全控制EXE(我写了它)。我可以对其进行编码以输出所需的内容


阅读 368

收藏
2020-07-25

共1个答案

小编典典

您在主要构建步骤中使用什么?Mavent?蚂蚁?自定义脚本?有很多方法可以执行此操作,并且它很大程度上取决于.exe的设计方式,而您在OP中并未对此进行解释。

最简单的是从下拉菜单中添加另一个 构建步骤 。选择 执行Windows批处理命令 。在其中,编写批处理命令以启动.exe并捕获返回代码:

C:\Location_of_exe\your.exe
IF NOT "%ERRORLEVEL%" == "0" (
    ECHO "Your exe failed"
    EXIT /B 1
) ELSE (
    ECHO "Your exe passed"
)

如果您的.exe像普通程序一样工作,则成功时它将返回退出代码0,否则它将返回非零退出代码。上面的语句查找非零退出代码(表示某种失败),如果检测到该退出代码,则退出错误代码为1的批处理EXIT /B 1。反过来,这将向Jenkins指示构建步骤已失败,并将标记作业已失败。

再一次,这很大程度上取决于您的.exe正确无误,并在失败时返回非零退出代码。

至于“我也希望exe记录其他一些详细信息”,再次取决于您的.exe

  • 是否针对不同的故障返回不同的退出代码?-如果是这样,可以轻松修改上面的代码以捕获所有可能性并相应地在日志中显示错误

  • 是命令行.exe在控制台中显示不同的错误吗?如果是这样,那么从批处理中调用它将自动在Jenkins日志中显示错误。如果您的.exe没有返回正确的退出代码,则也可以使用这种方法。您可以捕获命令行输出,并用于findstr在其中搜索特定的输出行以确定成功或失败。

  • 如果您的.exe是GUI应用程序,并且没有生成正确的退出代码,那么您将无法判断它是成功还是失败(以及失败的原因)

如果您确定哪个答案,我将更新此答案。

2020-07-25