如何在Maven GitLab CI/CD流水线中将JaCoCo报告HTML转换为PDF
GitLab CI/CD 中 JaCoCo HTML 报告转 PDF 方案
核心工具选择
GitLab CI 环境下最常用的 HTML 转 PDF 工具是 wkhtmltopdf,轻量且支持自定义导出参数,适配绝大多数静态 HTML 报告的转换需求。
实现步骤
1. 依赖安装
你使用的 CI 基础镜像如果没有预装该工具,需要先在 job 的脚本中执行安装:
- 基于 Debian/Ubuntu 系镜像:
apt update && apt install -y wkhtmltopdf fontconfig - 基于 Alpine 系镜像:
apk add --no-cache wkhtmltopdf fontconfig ttf-dejavu
安装 fontconfig 和通用字体是为了避免报告中的特殊符号、中文出现渲染异常。
2. 执行转换命令
直接指定输入的 JaCoCo index.html 路径和输出的 PDF 路径即可:
wkhtmltopdf <JaCoCo报告index.html的相对路径> <输出PDF的存储路径>
示例:如果你的 JaCoCo 报告生成在 target/site/jacoco/index.html,命令为:wkhtmltopdf target/site/jacoco/index.html jacoco-coverage-report.pdf
如需调整导出格式,可添加自定义参数,比如设置A4纸、10mm页边距:
wkhtmltopdf --page-size A4 --margin-top 10mm --margin-bottom 10mm target/site/jacoco/index.html jacoco-coverage-report.pdf
3. 配置流水线留存PDF
在 .gitlab-ci.yml 对应 job 的 artifacts 字段中配置生成的 PDF 路径,即可长期留存报告,完整示例配置如下:
export-jacoco-pdf: image: openjdk:17-jdk-slim script: # 安装依赖 - apt update && apt install -y wkhtmltopdf fontconfig # 执行测试生成JaCoCo报告,根据你使用的构建工具(Gradle/Maven等)调整该步骤 - mvn test # 执行转换 - wkhtmltopdf --enable-local-file-access target/site/jacoco/index.html jacoco-coverage-report.pdf artifacts: paths: - jacoco-coverage-report.pdf # 按需设置报告留存时间 expire_in: 180d
常见问题解决
如果转换后的 PDF 出现样式错乱、空白页问题,可在命令中添加 --enable-local-file-access 参数,允许工具加载报告关联的本地 CSS、JS 资源即可。
内容的提问来源于stack exchange,提问作者SouL
相关产品推荐
相关产品推荐

