Hudson/Jenkins如何确定工作结果状态



我有一个Hudson服务器,它运行maven 3作业来编译Java代码。在一个例子中,特定作业的构建日志表明编译和单元测试都成功运行,构建在成功状态下完成,并调用了另一个链式作业,所有这些都表明Hudson相信该作业是成功的。日志显示:

20:44:11  [INFO] BUILD SUCCESS
20:44:11  [INFO] ------------------------------------------------------------------------
20:44:11  [INFO] Total time: 1:35:43.774s
20:44:11  [INFO] Finished at: Mon Mar 24 20:44:11 CDT 2014
20:44:40  [INFO] Final Memory: 51M/495M
20:44:40  [INFO] ------------------------------------------------------------------------
20:44:42  channel stopped
20:44:42  [locks-and-latches] Releasing all the locks
20:44:42  [locks-and-latches] All the locks released
20:44:43  Archiving artifacts
20:45:33  Updating JIRA-1234
20:45:33  Description set: 1.23.567
20:45:33  Labelling Build in Perforce using ${BUILD_TAG}
20:45:33  [jobname] $ /usr/local/bin/p4 -s label -i
20:45:33  Label 'hudson-jobname-45' successfully generated.
20:45:33  [DEBUG] Skipping watched dependency update; build not configured with trigger:     jobname #45
20:45:33  Finished: SUCCESS

但是,Hudson作业页面显示一个"红球">,该作业运行在作业页面上被列为"上次失败的构建(#45("。当我看到hudson@hudson:~hudson/jobs/jobname/builds/45/build.xml文件,有一行显示

<result>FAILURE</result>

假设这是捕获最终结果的地方,我将其更改为

<result>SUCCESS</result>

并重新加载了页面,但该实例的作业页面上仍显示红色球。我没有重新启动服务器以尝试从磁盘中重新读取信息。

公平地说,这座建筑存在一些环境问题。几个小时后,我收到一条消息,说不止一个Hudson服务器实例在同一个磁盘映像上运行,并用证实了这一点

ps -ef | grep hudson.war

在服务器控制台上,显示两个正在运行的进程。作业页面显示这次运行"花费了0毫秒",尽管日志显示"总时间:1:35:43.774s"。这是Hudson版本2.2.1在"CentOS release 5.4(Final("上运行。

我的问题:

  1. 每个作业状态的标准是什么?(稳定、失败、不稳定、中止和禁用状态(
  2. 运行中的服务器何时何地捕获这些数据,可以对其进行修改吗

你在一篇文章中有太多问题。

对于"What are the criteria for each of the job statuses? (Stable, Failed, Unstable, Aborted and Disabled statuses)?"

  • Disabled是指项目/作业从配置中禁用时(由具有权限的用户完成(。这不是运行的状态

其余为作业运行状态:

  • Aborted表示取消/中止运行。当用户(具有权限(单击red cross按钮取消正在运行的生成时,就会发生这种情况。我相信SCM签出失败也会导致aborted状态(但对此不太确定(
  • Unstable是一种特殊状态,可应用于作业运行。通常这是通过作业配置(如Maven(或通过插件(如文本查找器插件(完成的。我不知道通过命令行诱导unstable状态的方法。也许通过groovy脚本,就像插件一样。大多数时候,unstable是由作业配置本身设置的,表示测试失败
  • StableFailed构建步骤的退出代码的直接结果。如果生成步骤(如执行Shell(退出并返回退出代码0,则该生成步骤被视为success。除了0之外的任何东西都被认为是failed。如果在执行构建步骤期间,进程退出时带有除0以外的任何内容,则将其视为failed。如果有多个生成步骤(自由样式的项目作业(,则最后一个生成步骤的退出代码将标记整个运行的状态。再次,中间的任何构建步骤如果使用0以外的任何内容退出,都将标记该构建failed
  • 生成后操作,例如文本查找器插件也可以更改作业运行的状态

您不应该修改作业历史文件来更改以前作业的状态。如果你需要更改作业结果,可以使用构建后的操作,如文本查找器插件,但即使这样,它也只允许降级结果。

下面是使用groovy后构建脚本在jenkins作业中打印提交SHA1的一行代码:

println "git rev-parse HEAD".execute().text

您可以将其保存到变量中,也可以将其导出为生成参数。

最新更新