You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Jenkins发送Jacoco代码覆盖率报告至邮箱?

Jenkins发送Jacoco覆盖率报告/摘要的实现方案

针对你的需求,有几种成熟的实现方式,从插件到自定义脚本都有,具体如下:

一、用Jenkins插件快速实现

1. Email Extension Plugin(邮件扩展插件)

这是最常用的邮件通知工具,完全支持自定义邮件内容,能嵌入覆盖率数据或直接附加完整报告:

  • 安装插件后,在任务的「构建后操作」里添加「Editable Email Notification」。
  • 内容类型选HTML,方便排版展示覆盖率摘要。
  • 直接引用Jacoco插件暴露的环境变量填充内容,比如*${JACOCO_LINE_COVERAGE}%*(行覆盖率)、*${JACOCO_BRANCH_COVERAGE}%*(分支覆盖率)。
  • 如果要附完整报告,在「Attachments」里填Jacoco报告的路径,比如**/target/site/jacoco/**。

2. Slack Notification Plugin(适合Slack团队)

如果团队日常用Slack沟通,这个插件可以把覆盖率摘要推送到指定频道:

  • 构建后操作里添加Slack通知,自定义消息内容,插入覆盖率指标,还能附上Jenkins上报告的直接链接。

3. Jacoco Plugin本身的变量支持

Jacoco Jenkins插件会自动把覆盖率数据暴露为环境变量,常用的有:

  • JACOCO_CLASS_COVERAGE:类覆盖率
  • JACOCO_METHOD_COVERAGE:方法覆盖率
  • JACOCO_LINE_COVERAGE:行覆盖率
    这些变量可以直接在任何通知插件的内容里引用,不用额外解析。

二、自定义脚本实现(适合高度定制需求)

如果插件满足不了你的定制化要求,用脚本处理更灵活:

1. Shell脚本(适用于自由风格任务)

先解析Jacoco的输出文件提取数据,再发送邮件:

# 从jacoco.csv提取行覆盖率
LINE_COVERAGE=$(grep "LINE_COVERAGE" target/site/jacoco/jacoco.csv | cut -d',' -f4)
# 发送邮件,附带摘要和报告文件
echo "本次构建Jacoco覆盖率摘要:
行覆盖率:${LINE_COVERAGE}%
完整报告见附件
" | mailx -s "Jenkins构建覆盖率通知" -a target/site/jacoco/index.html team@yourdomain.com

把这段脚本加到「构建后操作」的「Execute shell」里即可。

2. Groovy脚本(适用于Pipeline任务)

在Jenkinsfile里直接解析Jacoco报告并发送通知:

pipeline {
    agent any
    stages {
        stage('构建&测试') {
            steps {
                sh 'mvn clean test jacoco:report'
            }
        }
    }
    post {
        always {
            jacoco()
            script {
                // 解析jacoco.xml获取行覆盖率
                def jacocoXml = new XmlSlurper().parse(file: 'target/site/jacoco/jacoco.xml')
                def lineTotal = jacocoXml.counter.find { it.@type == 'LINE' }.@total.text() as Integer
                def lineCovered = jacocoXml.counter.find { it.@type == 'LINE' }.@covered.text() as Integer
                def lineCoverage = String.format("%.2f", (lineCovered / lineTotal) * 100)
                
                // 发送邮件
                emailext(
                    subject: "构建通知:${currentBuild.fullDisplayName} 覆盖率报告",
                    body: """
                    <h3>本次构建覆盖率摘要</h3>
                    <ul>
                        <li>行覆盖率:${lineCoverage}%</li>
                        <li><a href="${BUILD_URL}jacoco/">点击查看完整报告</a></li>
                    </ul>
                    """,
                    to: 'team@yourdomain.com'
                )
            }
        }
    }
}

内容的提问来源于stack exchange,提问作者ashishrana.cse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 02:55:20