Hudson/Jenkins:禁用失败的构建

4

当定期构建失败时,禁用它的首选方法是什么?快速搜索显示有一个先决条件构建步骤插件,但那会导致构建失败,我需要完全禁用构建,直到手动介入。

谢谢。

2个回答

15

好的,我想我成功找到了解决方案。

  • “重试失败构建”插件无法覆盖默认项目计划,因此失败的项目一遍又一遍地被构建,所以它没有用。
  • “Naginator”插件无法配置延迟时间,所以也不起作用。
  • “先决构建步骤”插件不适合这种情况。

解决方案是安装Groovy Postbuild插件,它在Jenkins JVM下运行并公开Jenkins实例。因此,可以在项目配置中以编程方式直接禁用当前构建:

if (manager.build.result.isWorseThan(hudson.model.Result.SUCCESS)) {
  manager.build.project.disabled = true
}

@Vladimir Sinenko 我尝试过了,但是在 Groovy Postbuild 脚本中没有任何东西被执行,甚至包括 println。可能是什么问题呢? - no1
你能提供更多关于答案的上下文吗?这段代码应该放在管道脚本的哪里?是在头部?还是在阶段中?或者是在步骤中? - majorgear

3
在项目状态页面有一个“禁用项目”按钮。我通过 HTTP POST 消息模拟按钮点击,使用数据“Submit=\"禁用项目\"",如下所示。
wget  --post-data  "Submit=\"Disable Project\"" ${JOB_URL}disable

从运行构建(项目)的bash脚本开始。 整个代码可以是这样的

set +e
#  Run test/build
#  ....
if [ $? -ne 0 ];
then
  wget  --post-data  "Submit=\"Disable Project\"" ${JOB_URL}disable
#  Or you can use following to disable one job from another
#  wget  --post-data  "Submit=\"Disable Project\"" http://<Server>/job/$JOB_NAME/disable
  exit -1
fi

这是一个相当古老的问题,所以我猜在Jenkins GUI中没有禁用/启用按钮。如果Jenkins受密码保护,则需要使用wget先登录,将cookies存储在某个文件中,然后在第二个文件中添加cookie。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接