You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Spring+Gradle的Jenkins Pipeline中集成Codecov覆盖率上传功能

如何将Codecov上传集成到Spring+Gradle的Jenkins Pipeline中?

你已经有了一个能生成Jacoco覆盖率报告的Jenkins Pipeline,要把数据上传到Codecov其实很简单,直接在现有Pipeline脚本里添加几个步骤就好,不用依赖GitHub Actions的配置文件。下面是具体的操作步骤和修改后的完整脚本:

第一步:准备Codecov令牌并在Jenkins中配置凭证

  1. 登录你的Codecov账号,找到对应项目的上传令牌(一般在项目设置页面里)。
  2. 打开Jenkins,进入「凭证管理」,创建一个Secret Text类型的凭证,把Codecov令牌粘贴进去,给凭证设置一个ID(比如codecov-token,后面脚本里要用到)。

第二步:修改Jenkins Pipeline脚本

需要做两处核心改动:

  • 确保Test阶段生成Codecov能识别的Jacoco报告文件
  • 添加专门的阶段执行Codecov上传命令

修改后的完整Pipeline代码

pipeline {
    agent any
    triggers {
        pollSCM '* * * * *'
    }
    tools {
        jdk 'jdk-16'
    }
    stages {
        stage('Build') {
            steps {
                sh 'java -version'
                sh "chmod +x gradlew"
                sh './gradlew assemble'
            }
        }
        stage('Test & Generate Coverage Report') {
            steps {
                sh 'java -version'
                sh "chmod +x gradlew"
                // 替换原来的test命令,执行jacocoTestReport会自动运行测试并生成覆盖率报告
                sh './gradlew jacocoTestReport'
            }
        }
        stage('Publish Test Coverage Report') {
            steps {
                step([$class: 'JacocoPublisher', execPattern: '**/build/jacoco/*.exec', classPattern: '**/build/classes', sourcePattern: 'src/main/java', exclusionPattern: 'src/test*' ])
            }
        }
        stage('Upload Coverage to Codecov') {
            environment {
                // 从Jenkins凭证中读取Codecov令牌
                CODECOV_TOKEN = credentials('codecov-token')
            }
            steps {
                // 使用Codecov官方上传脚本,自动识别Jacoco报告
                sh 'bash <(curl -s https://codecov.io/bash) -t $CODECOV_TOKEN'
                // 如果需要指定报告路径(比如怕脚本找不到),可以加上-f参数:
                // sh 'bash <(curl -s https://codecov.io/bash) -t $CODECOV_TOKEN -f build/reports/jacoco/jacocoTestReport/jacocoTestReport.xml'
            }
        }
    }
}

关键改动说明

  1. Test阶段优化:把原来的./gradlew test改成./gradlew jacocoTestReport——这个Gradle任务会自动运行所有测试,同时生成Jacoco的XML格式覆盖率报告(默认路径是build/reports/jacoco/jacocoTestReport/jacocoTestReport.xml),这是Codecov需要的数据源。
  2. 新增Codecov上传阶段
    • 通过environment块从Jenkins凭证中安全读取Codecov令牌,避免硬编码敏感信息。
    • 使用Codecov官方的bash上传脚本,它会自动扫描项目中的覆盖率报告文件,上传到Codecov平台。如果你的报告路径比较特殊,也可以用-f参数指定具体的XML文件路径。

注意事项

  • 确保Jenkins服务器能正常访问Codecov的官网,否则无法下载上传脚本。
  • 如果你用的是Gradle的Codecov插件(而不是bash脚本),也可以在build.gradle里配置插件,然后在Pipeline里执行./gradlew codecov,但bash脚本的方式更轻量化,不需要修改项目的Gradle配置。

内容的提问来源于stack exchange,提问作者ivaylo

火山引擎 最新活动