如何在 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 加载问题。
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 加载问题。