0

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

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

勾选此框时,覆盖指标目标(在 Jenkins 配置页面中)将在每次成功构建时更新: 在此处输入图像描述

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

4

1 回答 1

0

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

解决方案

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

Cobertura 配置可以像这样检索:

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

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

此处无法调用job-dsl的CoberturaContext普通方法,因为第一步表示的数据与方法参数不同:

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

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

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 文件呢?

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

于 2015-09-29T21:26:47.203 回答