Skip to content

Jenkins - 报告

除了简单的通过/失败状态,Jenkins 还可以发布在构建过程中生成的各种报告,提供关于质量、覆盖率和分析的更深入的洞察。

这通常涉及配置你的构建或测试工具,使其生成 Jenkins 理解的格式(或通过插件使其理解)的报告文件,然后使用特定的流水线 (Pipeline) 步骤或构建后操作来发布它们。

  • 目的: 显示详细的单元/集成/端到端测试结果、趋势、失败和堆栈跟踪。
  • 生成: 配置你的测试框架 (JUnit, TestNG, pytest, Jest, NUnit 等) 和构建工具 (Maven Surefire/Failsafe, Gradle Test, dotnet test, npm test) 输出 JUnit XML 格式的报告。
  • Jenkins 步骤: 使用 junit 步骤(来自内置的 JUnit 插件)。
  • 示例(流水线 post 块): junit '**/target/surefire-reports/*.xml' 或 junit '**/build/test-results/test/*.xml'

2. 代码覆盖率报告 (JaCoCo, Cobertura, etc.)

Section titled “2. 代码覆盖率报告 (JaCoCo, Cobertura, etc.)”
  • 目的: 可视化测试达到的行、分支和方法覆盖率。
  • 生成: 使用与你的构建集成的覆盖率工具(例如,JaCoCo Maven/Gradle 插件,JavaScript 的 Istanbul/nyc,Python 的 Coverage.py)来插桩代码并运行测试。这些工具会生成 XML 或 HTML 报告。
  • Jenkins 插件: 安装“Code Coverage API Plugin”以及针对你的格式的特定插件(例如,“JaCoCo”、“Cobertura Coverage”)。
  • Jenkins 步骤: 使用特定插件提供的步骤(例如,jacoco() 或 publishCoverage adapters: [cobertura('**/target/site/cobertura/coverage.xml')])。
  • 示例(带有 JaCoCo 的流水线 post 块): jacoco execPattern: '**/target/jacoco.exec', classPattern: '**/target/classes', sourcePattern: '**/src/main/java'

3. 静态分析报告 (Checkstyle, PMD, SpotBugs, ESLint)

Section titled “3. 静态分析报告 (Checkstyle, PMD, SpotBugs, ESLint)”
  • 目的: 显示静态分析工具检测到的编码标准违规、潜在 bug 和不良实践。
  • 生成: 作为构建的一部分运行分析工具(例如,Checkstyle/PMD/SpotBugs Maven/Gradle 插件,通过 npm 脚本运行 ESLint)。配置它们生成 XML 或 JSON 报告文件。
  • Jenkins 插件: 安装“Warnings Next Generation”插件。这是现代标准,取代了旧的单个分析插件。
  • Jenkins 步骤: 使用 recordIssues 步骤,配置特定的工具和报告文件模式。
  • 示例(流水线 post 块): recordIssues tools: [checkStyle(pattern: '**/target/checkstyle-result.xml'), pmdParser(pattern: '**/target/pmd.xml'), spotbugs(pattern: '**/target/spotbugsXml.xml')]
  • 目的: 显示以 HTML 格式生成的任何自定义报告(例如,来自 Cypress 或 Allure 等框架的测试报告、文档、分析仪表板)。
  • 生成: 生成报告的工具或脚本应在特定目录中生成一个 index.html 文件和相关的资源(CSS、JS、图片)。
  • Jenkins 插件: 安装“HTML Publisher”插件。
  • Jenkins 步骤: 使用 publishHTML 步骤,指定包含 HTML 报告的目录和主文件。
  • 示例(流水线 post 块): publishHTML(target: [allowMissing: true, alwaysLinkToLastBuild: true, keepAll: false, reportDir: 'target/my-custom-report', reportFiles: 'report.html', reportName: 'My Custom Report'])

发布后,这些报告的链接将出现在构建主页的侧边栏上。点击这些链接将会在 Jenkins UI 内显示报告(对于 JUnit、Coverage、Warnings NG)或导航到已发布的 HTML 内容。

这些报告提供了有价值的反馈回路,帮助开发者直接从 Jenkins 快速识别与测试、代码质量和覆盖率相关的问题。