我刚加入一家使用批处理文件构建C ++项目的公司。该批处理可以完成所有事情(更新svn,现在由jenkins完成),创建构建文件夹,在构建后删除不必要的文件,将库文件复制到构建文件夹等。
我的问题是,詹金斯(Jenkins)始终认为构建成功,即使失败了。发生问题时,.bat文件将创建一个名为errormake.txt的文件。我如何让詹金斯阅读该文章并将其标记为失败?
另外,有什么方法可以找出从.bat文件内部创建的构建文件夹Jenkins(也许在我调用批处理文件时发送变量)?
这是我当前用来调用.bat文件的单行:
call "C:\Source\BuildVersion\AppName\build_version.bat"
编辑:此外,此项目分为几个SVN存储库。%SVN_REVISION%是空白的。如何%SVN_REVISION%从第一个存储库(主要存储库)中获取正确的信息?
%SVN_REVISION%
要回答您的每个问题-
詹金斯根据 在每个“ 执行Windows批处理命令 ”块中运行的 最后一个命令 的返回码来设置作业的状态。 如果您的最后一条命令是, Jenkins认为一切正常 (如果’ ‘命令运行正常…) __ copy some.log D:
copy some.log D:
copy
根据您的操作系统,使用EXIT xx或EXIT /B xx, 其中“ xx”是一个大于零的整数。
EXIT xx
EXIT /B xx
使用 sdmythos_gr 提到的 Text-finder插件 。
对于在Jenkins下运行的每个脚本,有一些参数可用作环境变量-请参阅此处以获取这些参数的列表: Jenkins环境变量 。
对你的问题:
* `%WORKSPACE%` -工作区的绝对路径 * `%BUILD_NUMBER%` -当前的内部版本号,例如“ 153” * `%BUILD_ID%`-当前的版本ID,例如“ 2005-08-22_23-59-59”
(YYYY-MM-DD_hh-mm-ss)
这个答案来自相同的链接:
* `%SVN_REVISION%`-对于基于Subversion的项目,
此变量包含模块的修订号。 如果指定了多个模块,则不会设置该模块 。
希望能有所帮助