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

时间:2014-03-26 20:45:24

标签: maven jenkins hudson status jobs

我有一台运行maven 3作业的Hudson服务器来编译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

在服务器控制台上,显示两个正在运行的进程。工作页面表示此运行&#34;花了0毫秒&#34;,即使日志显示&#34;总时间:1:35:43.774s&#34;。这是Hudson ver。 2.2.1运行在&#34; CentOS版本5.4(最终)&#34;。

我的问题:

  1. 每种工作状态的标准是什么? (稳定,失败,不稳定,中止和禁用状态)?
  2. 在正在运行的服务器中捕获的数据何时何地,是否可以修改?

2 个答案:

答案 0 :(得分:3)

你在一篇文章中提出的问题太多了。

至于"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)或通过Text-finder plugin等插件来完成的。我不知道通过命令行导致unstable状态的方法。也许通过一个时髦的脚本,就像插件一样。大多数情况下,unstable由作业配置本身设置,表示测试失败。
  • StableFailed构建步骤退出代码的直接结果。如果构建步骤(例如执行Shell )以退出代码0退出,则构建步骤将被视为success0以外的任何内容都被视为failed。如果在执行构建步骤期间,该进程退出0以外的任何内容,则会将其视为failed。如果有多个构建步骤(自由式项目作业),则最后一个构建步骤的退出代码标记整个运行的状态。再一次,除0以外的任何内容之外的任何构建步骤都将标记构建failed
  • 构建后操作,例如Text-finder plugin也可以更改作业运行的状态。

您不应该修改作业历史文件来更改以前作业的状态。如果您需要更改作业结果,请使用Text-finder plugin之类的构建后操作,但即使这样,它也只允许降级结果。

答案 1 :(得分:-1)

这是使用groovy post-build脚本在jenkins作业中打印提交S​​HA1的一个方法:

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

您可以将其保存到变量或将其导出为构建参数。