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

How to retain Cobertura ratcheted configuration in job-dsl-plugin?

Jenkins 中的 Cobertura 插件通过勾选这些框来支持棘轮:

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

当触发种子作业时,这些值将被 job-dsl-plugin 覆盖。当我的种子作业被触发时,如何保留这些值?

好像我现在找不到一个很好的方法来做到这一点,但这是我的解决方案。

解决方案

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
    ),

既然可以直接调用 Jenkins API,为什么还要创建 JSON 文件呢?

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