Я пытаюсь использовать плагин JaCoCo для покрытия кода (3.0.4) в Jenkins (2.138.2). Он работает, как и ожидалось, но мне не нравится, что он не генерирует отчет, когда сборка не удалась или была прервана. Этот код здесь: https://github.com/jenkinsci/jacoco-plugin/blob/master/src/main/java/hudson/plugins/jacoco/JacocoPublisher.java#L585-L587
Для этого существует запрос на получение , но, похоже, он не был обработан после первоначального создания.
Поэтому я попытался перестроить плагин самостоятельно, выполнив следующие шаги:
- Клон https://github.com/jenkinsci/jacoco-plugin
- Оформить заказ последней версии 3.0.4
- Удалить оператор if сверху в классе JacocoPublisher
- Сборка плагина (
mvn package
как говорится)
Я могу построить его без проблем. Следующие шаги:
- Перейдите к Jenkins -> Управление Jenkins -> Управление плагинами -> Дополнительно
- Загрузите сгенерированный файл jacoco.hpi и перезапустите Jenkins
После этого шаг Post Build для запуска отчетов JaCoCo исчезает, и я вижу это в журналах jenkins:
06-Nov-2018 17:19:24.353 WARNING [Handling GET /jenkins/job/testing-jacoco-code-coverage-reports/configure from 0:0:0:0:0:0:0:1 : http-nio-8080-exec-3 Job/configure.jelly Project/configure-entries.jelly] hudson.ExpressionFactory2$JexlExpression.evaluate Caught exception evaluating: i.descriptor in /jenkins/job/testing-jacoco-code-coverage-reports/configure. Reason: java.lang.reflect.InvocationTargetException
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...
Caused by: java.lang.AssertionError: class hudson.plugins.jacoco.JacocoPublisher is missing its descriptor
at jenkins.model.Jenkins.getDescriptorOrDie(Jenkins.java:1517)
at hudson.tasks.Publisher.getDescriptor(Publisher.java:122)
at hudson.tasks.Recorder.getDescriptor(Recorder.java:51)
at hudson.plugins.jacoco.JacocoPublisher.getDescriptor(JacocoPublisher.java:775)
... 168 more
Решение для этой проблемы , предложенное Jenkins, здесь не применимо, так как плагин уже расширяет необходимые классы.
При возврате к предыдущей версии (3.0.4, но не из моей пользовательской сборки) шаг сборки появляется снова, но опять-таки отсутствует нужное мне поведение.
Я что-то упустил?
Спасибо!