【问题标题】:Coveralls badge is displaying as 'unknown'工作服徽章显示为“未知”
【发布时间】:2020-08-05 12:01:31
【问题描述】:

我已经用 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

我的问题是:如果我使用 feature 分支(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
            }
        }

【问题讨论】:

  • 你想实现这样的目标吗? tomasvotruba.com/blog/2017/06/12/…
  • 是的@DavidHlavati,但我正在尝试使用 Jenkins 而不是 Travis。尝试时,只有我遇到了上述问题。
  • 我计划在不久的将来实现它,当我有时间在 php - jenkins 组合上使用它时,所以如果你得到答案,我会检查它,否则如果我先解决了,还没有答案,我会回来告诉你过程的。

标签: java spring-boot jenkins gradle coveralls


【解决方案1】:

基于coveralls documentation需要配置CI_BRANCH环境细节。

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

【讨论】:

  • 是的,我尝试添加一些环境变量(例如:CI_NAME、CI_BRANCH、GIT_BRANCH),但没有奏效。顺便说一句,如果我们使用 Travis CI、CircleCI、Jenkins CI 或 Bitrise CI,插件实际上不需要这些变量,它们会被自动检测到。就我而言,我使用的是 Jenkins。
  • 能否在Jenkins日志中打印这些变量,看看是否检测到这些变量?
  • 是的,我在 jenkinsfile 中使用 echo sh(returnStdout: true, script: 'env') 做到了这一点,并且变量显示正确。
  • 我已经用我的 Jenkins 文件中的管道作业更新了我的问题。希望有帮助!
猜你喜欢
  • 2014-07-29
  • 2017-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-03
  • 2020-10-09
  • 2018-09-08
  • 1970-01-01
相关资源
最近更新 更多