我在Kubernetes集群中运行了Jenkins主容器。我将一个单独的VM配置为构建从属服务器,以便它可以构建容器。
我在git repo中将Jenkinsfile与Multibranch Pipeline
一起使用。
管道将构建Django应用程序Docker映像。我已经安装了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从属VM,可以看到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$
Jenkins为什么无法获得测试结果,因为我可以看到文件已创建?
答案 0 :(得分:5)
我想出了答案。 JUnit需要工作空间中的相对路径。您不需要包括工作空间的路径。
junit 'tests/results/*.xml'
答案 1 :(得分:1)
出现此错误是因为我在测试结果的路径中有一个前导点,例如:
junit './build/outputs/androidTest-results/connected/flavors/DEV/*.xml'
我不确定为什么,但这可以解决此问题:
junit 'build/outputs/androidTest-results/connected/flavors/DEV/*.xml'