У меня есть главный контейнер 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$
ПочемуДженкинс не смог получить результаты теста, так как я вижу, что файл создан?