工作服徽章显示为“未知”

Posted

技术标签:

【中文标题】工作服徽章显示为“未知”【英文标题】: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 组合上使用它时,所以如果你得到答案,我会检查它,否则如果我先解决了,还没有答案,我会回来告诉你过程的。 【参考方案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 文件中的管道作业更新了我的问题。希望有帮助!

以上是关于工作服徽章显示为“未知”的主要内容,如果未能解决你的问题,请参考以下文章

Java Android Badge Drawable 在配置更改后无法正常工作

如何在右侧的表格视图单元格中显示徽章计数

链接 ngIf 和动画转换

当应用程序未在管理博览会的情况下运行时,在通知上设置应用程序图标徽章编号

取消本地通知时删除徽章编号

非常简单的PowerShell脚本由于未知原因而无法正常工作