首页 > 解决方案 > 验证 Jenkins 管道中 Angular 应用程序的低覆盖率

问题描述

当我们想要验证 Java 应用程序的代码覆盖率时,我们使用 jacoco 生成一个 .exec 文件并运行 Jenkins jacoco 步骤来强制执行验证阈值,例如:

def classPattern = '**/target/classes'
def execPattern = '**/target/**.exec'
def sourcePattern = '**/src/main/java'

def coverageThreshold = 50

jacoco changeBuildStatus: true, classPattern: classPattern, maximumLineCoverage: "$coverageThreshold", minimumLineCoverage: "$coverageThreshold", execPattern: execPattern, sourcePattern: sourcePattern
if (currentBuild.result != 'SUCCESS') {
    error 'JaCoCo coverage failed'
}

我想对从 Jenkins 管道构建的 Angular 应用程序执行相同的操作,如果未达到指定的阈值,则强制构建失败。

在管道阶段,我执行 Angular 测试:

sh "ng test --code-coverage"

这会生成一个代码覆盖率 lcov 报告coverage/lcov.info

我现在如何验证覆盖范围?是否有一些相当于jacoco()我可以用来做的詹金斯步骤?

标签: angularjenkinsjenkins-pipelineangular-testlcov

解决方案


junitstep 应该捕获那些。

这是一个例子

詹金斯文件

stage('Unit Test') {
  agent {
    docker 'circleci/node:9.3-stretch-browsers'
  }
  steps {
    unstash 'node_modules'
    sh 'yarn test:ci'
    junit 'reports/**/*.xml'
  }
}

{
  "test:ci": "ng test --config karma.conf.ci.js --code-coverage --progress=false"
}

推荐阅读