Как сохранить храповую конфигурацию Cobertura в плагине job-dsl?

Плагин Cobertura в Jenkins поддерживает храповик, установив следующие флажки:

  • Автообновление здоровья
  • Автоматическое обновление стабильности

Если установить этот флажок, целевые показатели покрытия (на странице конфигурации Jenkins) будут обновляться при каждой успешной сборке: введите здесь описание изображения

Эти значения будут переопределены плагином job-dsl-plugin при запуске начального задания. Как я могу сохранить эти значения при запуске моего начального задания?


person ceilfors    schedule 22.09.2015    source источник


Ответы (1)


Кажется, я не могу найти хороший способ сделать это прямо сейчас, но вот мое решение.

Решение

1. Выполните сценарий Groovy и сохраните всю текущую конфигурацию cobertura задания в файле JSON.

Конфигурацию Cobertura можно получить следующим образом:

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

2. job-dsl-plugin для настройки cobertura с помощью файла JSON, если он доступен

Обычный метод CoberturaContext job-dsl здесь вызвать нельзя, потому что данные, представленные на первом шаге, отличаются параметром метода:

  • 80% хранится как 8000000 в файле JSON.
  • 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
    ),

Зачем создавать файл JSON, если можно напрямую вызывать Jenkins API?

Мое исходное задание настроено с помощью этого примера здесь, поэтому у меня есть дополнительный путь к классам в конфигурации работы. Когда я попытался напрямую обратиться к Jenkins API, у меня возникла проблема с загрузкой классов для классов плагинов Cobertura.

person ceilfors    schedule 29.09.2015