如果发现特定错误,请重新启动Jenkins作业

时间:2017-02-03 12:39:05

标签: jenkins

我们正在每晚构建中构建大量代码变体,并且自然会经常出现间歇性错误,即使单个错误的可能性仅为百分之几。一些最常见的是在构建期间断开连接的奴隶和不响应的服务器。

构建失败分析器插件可以对不同的失败原因进行分类,但我们需要的是一个可以对这些问题采取行动的插件,并在出现间歇性错误时重新构建构建。优选地,解决方案应该适合我们的构建流程,以便结果传播到创建构建报告的作业。

是否有这样的插件或其他工具来执行此操作?

2 个答案:

答案 0 :(得分:0)

这里Naginator Plugin

你可以:

  • 为不稳定的构建和失败重新运行构建
  • 如果构建的日志输出包含给定的正则表达式
  • ,则仅重建作业
  • 仅为矩阵作业的失败部分重新运行构建

答案 1 :(得分:0)

如果您使用的是管道,则可以定义一个通用重试方法,该方法将调用和可重试策略作为输入。

它的作用是tee在一个单独的文件中执行(使用Pipeline Utility Steps插件的tee步骤),然后读取该文件并检查可重用策略是否适用。

类似的东西:

def retry(execution, isRetriable) {
    def retryCount = 0
    while (true) {
        def file = "execution-${System.currentTimeMillis()}.log"
        try {
            tee(file) {
                execution()
            }
            break
        } catch (Exception e) {
            def output = readFile(file: file)
            if (isRetriable(output)) {
                retryCount++
                if (retryCount == 5) {
                    throw e
                }
            } else {
                throw e
            }
        }
    }
}

然后用retry包装您的调用:

retry(
        { stepThatOccasionallyFails() },
        { output -> output.contains('a random error!') }
)