Плагин Jenkins JUnit выдает ошибку «ОШИБКА: не найдены файлы отчета о тестировании. Ошибка конфигурации?» - PullRequest
0 голосов
/ 02 октября 2018

У меня есть главный контейнер Jenkins, работающий в кластере Kubernetes.У меня есть отдельная виртуальная машина, настроенная как подчиненная сборка, чтобы она могла создавать контейнеры.

Я использую Multibranch Pipeline с Jenkinsfile в репозитории git.

Конвейер создает образ Dockerкоторое является приложением Django.Я установил django_nose, чтобы он мог создавать файлы xunit с результатами теста.

В настройках Django есть следующие параметры для включения результатов теста xunit.

TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
NOSE_ARGS = [
    '--with-xunit',
    '--xunit-file=/tmp/tests/results/results.xml',
] 

В конвейере у меня естьследующий этап:

stage("Test") {
    sh("docker run --rm -i \
        -v '${env.WORKSPACE}/tests/results/':/tmp/tests/results \
        ${image} python3 manage.py test")
    junit '${env.WORKSPACE}/tests/results/*.xml'
}

Он монтирует каталог в рабочем пространстве Jenkins как том в контейнере, чтобы после завершения контейнера Jenkins мог просматривать сохраненные результаты теста.

Когда я запускаю сборку, я получаю следующую ошибку:

[Pipeline] { (Test)
[Pipeline] sh
[my_project-test-7T6G6Z...QQBYGFA] Running shell script
+ docker run --rm -i -v /home/jenkins/jenkins_home/workspace/my_project-test-7T6G6Z...QQBYGFA/tests/results/:/tmp/tests/results my-registry/username/my_project python3 manage.py test
nosetests --with-xunit --xunit-file=/tmp/tests/results/results.xml --verbosity=1
Creating test database for alias 'default'...
............
----------------------------------------------------------------------
Ran 12 tests in 1.421s

OK
Destroying test database for alias 'default'...
[Pipeline] junit
Recording test results
No test report files were found. Configuration error?
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline

Я вижу, что тесты Django работают и проходят.Если я посмотрю на подчиненную виртуальную машину Jenkins, то увижу, что файл results.xml находится в том месте, где он должен находиться, и содержит результаты тестов в формате XML.

jenkins@jenkins-slave01:~/jenkins_home/workspace$ ls -al /home/jenkins/jenkins_home/workspace/my_project-test-7T6G6Z...QQBYGFA/tests/results/results.xml
-rw-r--r-- 1 root root 1329 Oct  2 09:45 /home/jenkins/jenkins_home/workspace/my_project-test-7T6G6Z...QQBYGFA/tests/results/results.xml
jenkins@jenkins-slave01:~/jenkins_home/workspace$

ПочемуДженкинс не смог получить результаты теста, так как я вижу, что файл создан?

Ответы [ 2 ]

0 голосов
/ 17 августа 2019

У меня была эта ошибка, потому что у меня была начальная точка на пути к результатам теста, например:

junit './build/outputs/androidTest-results/connected/flavors/DEV/*.xml'

Я не уверен почему, но это исправило:

junit 'build/outputs/androidTest-results/connected/flavors/DEV/*.xml'
0 голосов
/ 02 октября 2018

Я разобрался с ответом.JUnit нужен относительный путь из рабочей области.Вам не нужно указывать путь к рабочей области.

junit 'tests/results/*.xml'
...