当前位置: 首页 > 面试题库 >

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

蒙洛华
2023-03-14
问题内容

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

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

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

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


问题答案:

您在主要构建步骤中使用什么?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应用程序,并且没有生成正确的退出代码,那么您将无法判断它是成功还是失败(以及失败的原因)

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



 类似资料:
  • 问题内容: 我一直在尝试将jar转换为exe。该程序-jar-使用蓝牙库“ Bluecove”,它是某个目录中的另一个jar。该程序还通常使用Java Swing 和东西。从Netbeans或Eclipse中运行时,该程序可以完美运行。现在是我部署它的时候了,因此我需要将其转换为exe。但是我一直无法获得最终的可执行文件来链接“ Bluecove”。我尝试了JSmooth和Launch4j,但是使

  • 问题内容: 我需要对CSV文件(以逗号分隔的文本文件)应用SQL查询。我的SQL是通过其他工具预定义的,无法更改。它可能在FROM部分中包含嵌入式选择和表别名。 对于我的任务,我发现了两个提供JDBC驱动程序 的开源 库(这是项目要求): CsvJdbc XlSQL JBoss Teiid 创建一个Apache Derby DB,将所有CSV加载为表格并执行查询。 这些是我遇到的问题: 它不接受S

  • 问题内容: 我有一个外部程序Otter,该程序将一些文件名作为参数并创建了一个输出文件,也将其指定为参数。因此,例如,如果我的输入是“ proof.in”,并且我希望将输出放置在“ proof.out”文件中,则可以在终端中运行以下命令: “ proof.in”文件必须与水獭可执行文件位于同一文件中。 问题是我需要Java提供此功能,因此在我的Java代码中执行以下操作: 但是在此行之后,整个用户

  • 我试图写一个Java程序,它得到一个可执行文件运行在Linux下。此可执行文件接收两个参数,并使用这两个给定参数执行nmap-sp操作。 我将此文件称为file.exe,其内容如下: 我得到以下异常和错误日志: 线程“main”java.io.ioException中的异常:无法运行程序“file.exe”:error=2,在java.lang.runtime.exec(runtime.java:

  • 提示:找不到进程或命名空间日志 我的命令是:

  • 问题内容: 我有一个sql脚本文件,我需要通过java执行其中的命令。我在互联网上搜索了相同的内容,得到了一些定义解析器的代码以拆分SQL语句并执行该代码。但是它们都不适合我的sql脚本文件。因为我的脚本文件同时包含create语句和alter语句,但不带分号[相反,它具有GO]有人可以建议一种执行脚本文件的解决方案吗?谢谢,Mahesh 问题答案: 对于简单的脚本,我通常使用ibatis- Sc