Jenkins 中的 Cobertura 插件通过勾选这些框支持棘轮:
- 健康自动更新
- 稳定性自动更新
勾选此框时,覆盖指标目标(在 Jenkins 配置页面中)将在每次成功构建时更新:
当种子作业被触发时,这些值将被 job-dsl-plugin 覆盖。当我的种子作业被触发时,如何保留这些值?
似乎我现在找不到一个很好的方法来做到这一点,但这是我的解决方案。
解决方案
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普通方法,因为第一步表示的数据与方法参数不同:
截至今天,我不能简单地将值除以 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 插件类的类加载问题。