一尘不染

詹金斯(Jenkins)始终认为使用批处理/ bat的构建是成功的

jenkins

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

我的问题是,詹金斯(Jenkins)始终认为构建成功,即使失败了。发生问题时,.bat文件将创建一个名为errormake.txt的文件。我如何让詹金斯阅读该文章并将其标记为失败?

另外,有什么方法可以找出从.bat文件内部创建的构建文件夹Jenkins(也许在我调用批处理文件时发送变量)?

这是我当前用来调用.bat文件的单行:

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

编辑:此外,此项目分为几个SVN存储库。%SVN_REVISION%是空白的。如何%SVN_REVISION%从第一个存储库(主要存储库)中获取正确的信息?


阅读 493

收藏
2020-07-25

共1个答案

一尘不染

要回答您的每个问题-

  • 即使工作实际失败,詹金斯也总是返回“ SUCCESS”

詹金斯根据 在每个“ 执行Windows批处理命令 ”块中运行的 最后一个命令 的返回码来设置作业的状态。 如果您的最后一条命令是,
Jenkins认为一切正常 (如果’ ‘命令运行正常…)
__
copy some.log D:

copy

根据您的操作系统,使用EXIT xxEXIT /B xx
其中“ xx”是一个大于零的整数。

  • 如何根据日志文件让Jenkins将构建标记为失败

使用 sdmythos_gr 提到的
Text-finder插件

  • 有什么办法可以找出Jenkins创建的构建文件夹

对于在Jenkins下运行的每个脚本,有一些参数可用作环境变量-请参阅此处以获取这些参数的列表:
Jenkins环境变量

对你的问题:

* `%WORKSPACE%` -工作区的绝对路径
* `%BUILD_NUMBER%` -当前的内部版本号,例如“ 153”
* `%BUILD_ID%`-当前的版本ID,例如“ 2005-08-22_23-59-59”

(YYYY-MM-DD_hh-mm-ss)

  • 我如何从第一个存储库中获取正确的%SVN_REVISION%

这个答案来自相同的链接:

* `%SVN_REVISION%`-对于基于Subversion的项目,

此变量包含模块的修订号。
如果指定了多个模块,则不会设置该模块

希望能有所帮助

2020-07-25