如何在job-dsl-plugin中保留Cobertura棘轮配置?

时间:2015-09-22 15:37:35

标签: jenkins jenkins-job-dsl

詹金斯的Cobertura插件通过勾选这些方框来支持棘轮:

  • 健康自动更新
  • 稳定性自动更新

勾选此框时,将在每次成功构建时更新覆盖率指标目标(在Jenkins配置页面中): enter image description here

触发种子作业时,job-dsl-plugin会覆盖这些值。如何在触发种子作业时保留这些值?

1 个答案:

答案 0 :(得分:0)

似乎我现在找不到一个很好的办法,但这是我的解决方案。

<强>解决方案

1。执行Groovy脚本并将所有当前作业cobertura配置存储在JSON文件中。

可以检索Cobertura配置,如:

def coberturaPublisher = project.getPublishersList().get(CoberturaPublisher)
coberturaPublisher.**healthyTarget**.getTarget(**CoverageMetric.METHOD**)

2。 job-dsl-plugin使用JSON文件配置cobertura(如果可用)

job-dsl的CoberturaContext常规方法不能在这里调用,因为第一步中表示的数据与方法参数不同:

  • 80%在JSON文件中存储为8000000
  • 80%必须以80而不是8000000传递给CoberturaContext方法。

截至今天,我不能简单地将值除以100000,因为该方法接受的是Integer而不是double。为了保持棘轮配置的精度,我必须通过直接操纵目标来绕过验证:

coberturaContext.targets = [
    'METHOD': new CoberturaContext.CoberturaTarget(
        targetType: CoberturaContext.TargetType.METHOD,
        healthyTarget: 8000000,
        unhealthyTarget: previousConfig ? previousConfig.cobertura.method.unhealthy : 0,
        failingTarget: previousConfig ? previousConfig.cobertura.method.failing : 0
    ),

为什么要在创建JSON文件的同时直接调用Jenkins API?

我的种子作业配置了这个example here,因此我在作业配置中使用了一个额外的类路径。当我试图直接访问Jenkins API时,我遇到了Cobertura插件类的类加载问题。