Skip to main content
 首页 » 编程设计

batch-file之Jenkins 总是认为使用批处理/bat 构建成功

2024年11月01日28itcoder

我刚刚加入了一家使用批处理文件构建 C++ 项目的公司。批处理做各种事情(更新 svn,现在由 jenkins 完成),创建构建文件夹,构建后删除不必要的文件,将库文件复制到构建文件夹等。

我的问题是 Jenkins 总是认为构建成功,即使它不是。当出现问题时,.bat 文件会创建一个名为 errormake.txt 的文件。如何让 Jenkins 阅读并将构建标记为失败?

另外,有什么方法可以找到从 .bat 文件中创建的构建文件夹 Jenkins(当我调用批处理文件时可能会发送一个变量)?

这是我目前用来调用 .bat 文件的单行代码:

call "C:\Source\BuildVersion\AppName\build_version.bat" 

编辑:此外,这个项目被分成几个 SVN 存储库。 %SVN_REVISION%为空白。我怎样才能得到正确的 %SVN_REVISION%从第一个存储库(主要的)?

请您参考如下方法:

回答你的每一个问题——

  • Jenkins 总是返回“SUCCESS”,即使 Job 实际失败 :

    Jenkins 根据最后一条命令的返回码设置 Job 的状态
    在每个“执行 Windows 批处理命令” block 中运行。
    如果您的最后一条命令是 copy some.log D: ,
    Jenkins 认为一切都很好
    (如果“copy”命令运行良好...)

    使用EXIT xxEXIT /B xx ,取决于您的操作系统,
    其中 'xx' 是大于零的某个整数。
  • 如何根据日志文件 让 Jenkins 将构建标记为失败:

    使用 Text-finder Plugin ,如 所述sdmythos_gr .
  • 有什么方法可以找到 Jenkins 创建的构建文件夹 :

    有一些参数可用作环境变量
    对于在 Jenkins 下运行的每个脚本 - 有关这些参数的列表,请参见此处:
    Jenkins Environment Variables .

    对于你的问题:
  • %WORKSPACE% - 工作区的绝对路径
  • %BUILD_NUMBER% - 当前版本号,如“153”
  • %BUILD_ID% - 当前构建 id,例如“2005-08-22_23-59-59”
    (YYYY-MM-DD_hh-mm-ss)
  • 如何从第一个存储库中获取正确的 %SVN_REVISION% :

    这个答案来自同一个链接:
  • %SVN_REVISION% - 对于基于 Subversion 的项目,
    此变量包含模块的修订号。
    如果您指定了多个模块,则不会设置 .

  • 希望有帮助