首页 > 解决方案 > 工作服徽章显示为“未知”

问题描述

我用 Gradle 开发了一个 springboot 应用程序。我已经集成了 Jenkins,现在我正在尝试将代码覆盖率集成到我的项目中。为此,我将 JaCoCo 工作服与 Jenkins CI 一起使用。

Gradle 插件

plugins {
   id 'com.github.kt3k.coveralls' version '2.10.1'
}

jacocoTestReport {
  reports {
    xml.enabled = true
    html.enabled = true
  }
  getClassDirectories().setFrom(classDirectories.files.collect {
        fileTree(dir: it,
                exclude: [
                '**/BmsService*',
                '**/BmsClientWrapper*'])
  })
}

我的 Jenkins 工作调用以下 JaCoCo 测试命令。

sh "gradle clean test jacocoTestReport coveralls"

我的 Jenkins 构建成功,数据已成功发送到https://coveralls.io

我的问题是:如果我使用功能分支(master 除外)进行构建,则在 coveralls.io 中,徽章没有正确显示,甚至它也没有显示“提交者”。顺便说一句,我正在使用 GitHub。

在此处输入图像描述

在此处输入图像描述

任何帮助将不胜感激!

以下是我的管道作业:

stage('Git checkout') { 
           deleteDir()
           checkout(scm)
        }

        stage('Build Source code') {

           container('gradle-docker') {
              sh 'gradle -version'
              sh 'gradle clean'
              sh "gradle build"
           }
        }

        stage('Code Coverage') {
            if('master'.equals(env.BRANCH_NAME)) {
                def secrets = [
                    [$class: 'VaultSecret', path: 'secret/build/credentials', secretValues: [
                        [$class: 'VaultSecretValue', envVar: 'COVERALLS_REPO_TOKEN', vaultKey: 'coveralls_repo_token']
                    ]]
                ]
                wrap([$class: 'VaultBuildWrapper', vaultSecrets: secrets]) {
                    container('gradle-docker') {
                        sh "gradle clean test jacocoTestReport coveralls"
                    }
                }
            } else {
                println 'Code Coverage is only for the master branch, Skipping for ' + env.BRANCH_NAME
            }
        }

标签: javaspring-bootjenkinsgradlecoveralls

解决方案


根据工作服文档,您需要配置 CI_BRANCH 环境详细信息。

甚至在工作服 gradle plugin中也提到了它。您需要使用git命令提取此信息并填充所需的变量。


推荐阅读