【问题标题】:Jenkins pass or fail build on external executableJenkins 通过或失败构建外部可执行文件
【发布时间】:2012-11-28 01:49:38
【问题描述】:

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

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

我还希望 exe 记录一些其他详细信息(例如更改的内容 - 构建是通过还是失败)。是否有任何文档说明我可以如何做到这一点?

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

【问题讨论】:

    标签: jenkins hudson exe jenkins-plugins


    【解决方案1】:

    您在主要构建步骤中使用什么?马文特?蚂蚁?自定义脚本?有很多方法可以做到这一点,这在很大程度上取决于您的 .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 应用程序,并且没有生成正确的退出代码,那么您无法判断它是成功还是失败(以及失败的原因)

    如果你确定是哪一个,我会更新这个答案。

    【讨论】:

    • 我正在使用 MSBuild,并且我可以完全控制 EXE(我编写了它)。我可以对失败进行编码以返回非 0。如果我明白你在说什么,我输出到控制台的任何内容都会被记录下来。我明天会测试这个。
    • @MillinMo 是的,任何输出到控制台的内容都会被记录下来。您还可以缩短返回错误代码到EXIT %ERRORLEVEL%
    【解决方案2】:

    这是我能想到的一个快速的:

    1. 将构建过程分成 2 个作业 - A. Upto Exe。 B. 发布 Exe
    2. 在作业 A 中,Add post build step 运行作业 B(无论 A 是否成功)
    3. 在 B 的配置中,编写脚本以使用 Jenkins 环境变量捕获输出。查看<yourjenkinsurl>/env-vars.html/

    但它真的是Exe 还是其他一些可执行文件(如 BAT),因为 exe 是二进制文件,您无法真正更改 exe 来实现这一点 - I would also like the exe to log some other details。您必须更改可执行文件的源代码才能从第 3 步捕获变量并执行一些操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-27
      • 1970-01-01
      • 2014-01-22
      • 2013-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-08
      相关资源
      最近更新 更多