Jenkins 集成 allure 测试报告工具

allure 基于已有的测试报告数据进行进一步的加工,美化等操作,相当于做了一次数据格式转换。allure 支持多种语言的多种测试框架,比如 Java 的 jUnit4、jUnit5、TestNg 等等。

本文主要介绍如何在 Jenkins 中集成 allure 测试报表工具,在每次项目自动化测试完成后,用 allure 生成经过加工后的测试报告。我们以 java 工程的 TestNg 测试为例,处理 TestNg 生成的测试报告。

  • Jenkins 安装 allure 插件
    全局工具配置:

  • Jenkinsfile 添加 allure 代码

    1
    2
    3
    script {
    allure jdk: '', report: "target/allure-report-unit", results: [[path: "target/surefire-reports"]]
    }

    target/allure-report-unit 参数:allure 报告生成路径;
    target/surefire-reports 参数:测试报告原始路径;

  • Jenkins 平台查看 allure 报告
    在 allure 成功集成到 Jenkins 后,allure 每次处理完成,在 Jenkins job 页面都可以看到 allure 的图标,点击图标即可查看报告详细信息:

遇到问题及解决方法

问题:
allure 在 Jenkins pipline 中生成报表时报目录权限问题:java.nio.file.AccessDeniedException

原因:
jenkins k8s pod 执行 job 时默认用户为 jenkins,但是 pipeline 中调用的容器生成的文件的属主是 root。
解决方法:
配置 jenkins k8s 插件模版,添加安全配置,运行用户设置为 root
https://groups.google.com/forum/#!topic/jenkinsci-users/GR0n8ZkCJ-E

pod 配置(spec 下):

1
2
3
securityContext:
runAsUser: 0
fsGroup: 0

参考文档

https://docs.qameta.io/allure/