簡體   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