繁体   English   中英

如何标记jenkins构建不稳定与groovy postbuild

[英]How to mark the jenkins build unstable with groovy postbuild

我正在Jenkins运行带有nosetests的测试用例。 一般来说,它将有100个测试用例,我想在少于20个测试用例失败时标记构建不稳定。 如果超过20个测试用例失败,则标记构建失败。

我跑的命令:

nosetests test.py --tc-file config.yml --tc-format yaml

首先,我试图将构建的状态更改为Unstable但它仍然失败。

我使用的groovy脚本:

manager.addWarningBadge("Thou shalt not use deprecated methods.")
manager.createSummary("warning.gif").appendText("<h1>You have been warned!</h1>", false, false, false, "red")
manager.buildUnstable()

执行前两行代码,但作业仍标记为失败。

我的jenkins配置有什么问题吗? 或者groovy postbuild插件不适用于nosetest?

这是控制台输出:

FAILED (failures=2)
Build step 'Execute shell' marked build as failure
Build step 'Groovy Postbuild' marked build as failure
Finished: FAILURE

正如DevD所述, FAILED是一个比UNSTABLE的更重要的构建状态。 这意味着在步骤失败后调用manager.buildUnstable()manager.build.setResult(hudson.model.Result.UNSTABLE)仍然会使构建结果FAILED

但是,您可以使用反射将失败的构建结果状态覆盖为UNSTABLE

manager.build.@result = hudson.model.Result.UNSTABLE

下面的示例遍历构建日志行,查找特定的正则表达式。 如果发现它将更改(降级)构建状态,则添加徽章并附加到构建摘要。

errpattern = ~/TIMEOUT - Batch \w+ did not complete within \d+ minutes.*/;
pattern = ~/INSERT COMPLETE - Batch of \d+ records was inserted to.*/;
manager.build.logFile.eachLine{ line ->
    errmatcher=errpattern.matcher(line)
    matcher=pattern.matcher(line)
    if (errmatcher.find()) {
        // warning message
        String errMatchStr = errmatcher.group(0) // line matched
        manager.addWarningBadge(errMatchStr);
        manager.createSummary("warning.gif").appendText("<h4>${errMatchStr}</h4>", false, false, false, "red");
        manager.buildUnstable();
        // explicitly set build result
        manager.build.@result = hudson.model.Result.UNSTABLE
    } else if (matcher.find()) {
        // ok
        String matchStr = matcher.group(0) // line matched
        manager.addInfoBadge(matchStr);
        manager.createSummary("clipboard.gif").appendText("<h4>${matchStr}</h4>", false, false, false, "black");
    }
}

注意:这会迭代每一行,因此假设这些匹配是唯一的,或者您希望为每个匹配的行追加徽章和摘要!

构建后的结果是:

Build step 'Execute Groovy script' marked build as failure
Archiving artifacts
Build step 'Groovy Postbuild' changed build result to UNSTABLE
Email was triggered for: Unstable

实际上这是工作的预期方式。

偏好失败 - >不稳定 - >成功

使用groovy post build我们可以将较低的结果(SUCCESS)更改为更高的首选项(FAILED / UNSTABLE)..反之亦然。

作为Nosetest之后的解决方法,添加一个执行shell并“退出0”。 所以总是你的结果将是较低的偏好。 现在通过你的帖子构建groovy脚本根据测试结果决定你的退出标准。 这实际上是一个调整..将探索更多并在此更新您。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM