Подсчет падений от JUnitArchiver - PullRequest
0 голосов
/ 18 марта 2020

Я использую groovy в сценариях конвейера jenkins. Как я могу взять результаты падений юнит-тестов из файла отчета junit? Теперь я пытаюсь получить их по коду:

import hudson.tasks.junit.TestResultAction
import hudson.model.*
import java.*
import java.lang.*
import hudson.*
import hudson.model.*
import jenkins.model.Jenkins

... некоторый код ...

dir (workspace){                 
    step([$class: 'JUnitResultArchiver', keepLongStdio: true, testResults: "artifacts/*/*.xml"])
    result_junit = count_fail_unit_tests()
    echo "UNIT TESTS FAIL COUNT: ${result_junit}"                     
    if (result_junit != 0){
            currentBuild.displayName = "UNIT TESTS FAIL"
        }
    throw new Exception("warning_exception")
    }
archiveArtifacts allowEmptyArchive: true, artifacts: "log/*", caseSensitive: false
}


@NonCPS
def count_fail_unit_tests() {           
    def count_fail_tests = manager.build.getAction(hudson.tasks.junit.TestResultAction.class).getFailCount()
    return count_fail_tests
}

и получил ошибку

ОШИБКА: groovy .lang.MissingPropertyException: Нет такого свойства: менеджер для класса: Script4

Ранее я получил количество ошибок по коду:

dir (workspace){
    result_junit = junit keepLongStdio: true, testResults: "artifacts/*/*.xml"
    echo "UNIT TESTS FAIL COUNT: ${result_junit}"                     
    if (result_junit != 0){
            currentBuild.displayName = "UNIT TESTS FAIL"
        }
    throw new Exception("warning_exception")
    }
archiveArtifacts allowEmptyArchive: true, artifacts: "log/*", caseSensitive: false
}

, и это было работал, но имел ошибку: при использовании junit keepLongStdio: true, testResults: "artifacts/*/*.xml" и отчета. xml файл имеет неправильную структуру, сборка не дает сбоев и остается в статусе «УСПЕХ». С использованием step([$class: 'JUnitResultArchiver', keepLongStdio: true, testResults: "artifacts/*/*.xml"]) он не работает, поэтому я хочу использовать этот метод. Если я попытаюсь

some_return = step([$class: 'JUnitResultArchiver', keepLongStdio: true, testResults: "artifacts/*/*.xml"]) 
echo "${some_return}"

получить

null

Есть ли какие-нибудь методы для junit keepLongStdio: true, testResults: "artifacts/*/*.xml" для сбоя сборки, если xml junit report это неверно? Или как я могу считать от

step([$class: 'JUnitResultArchiver', keepLongStdio: true, testResults: "artifacts/*/*.xml"])
...