我有一个运行 maven 3 作业来编译 Java 代码的 Hudson 服务器。在一个实例中,特定作业的构建日志表明编译和单元测试都成功运行,构建在成功状态下完成并调用了另一个链式作业,所有这些都表明 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
在服务器控制台上,显示两个正在运行的进程。即使日志显示“总时间:1:35:43.774s”,作业页面仍显示此运行“耗时 0 毫秒”。这是 hudson 版。 2.2.1 在“CentOS 5.4 版(最终版)”上运行。
我的问题:
最佳答案
您在一个帖子中有太多问题。
至于"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
的方法通过命令行显示状态。也许通过一个 groovy 脚本,就像插件一样。大多数时候,unstable
由作业配置本身设置,表示测试失败。 Stable
和 Failed
是的直接结果构建步骤 的退出代码。如构建步骤,如执行 Shell , 以退出代码 0
退出,构建步骤被视为 success
.除 0
以外的任何内容被认为 failed
.如果在构建步骤的执行过程中,进程以除 0
以外的任何内容退出。 ,被认为是 failed
.如果有多个构建步骤(自由式项目作业),则最后一个构建步骤的退出代码标记整个运行的状态。再一次,中间的任何构建步骤都会以 0
以外的任何内容退出。将标记构建 failed
. 您不应该通过修改作业历史文件来更改以前作业的状态。如果您需要更改作业结果,请使用构建后操作,例如 Text-finder plugin ,但即便如此,它也只允许降级结果。
关于maven - Hudson/Jenkins 如何确定工作结果状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22672684/