java.lang.AssertionError: класс hudson.plugins.jacoco.JacocoPublisher отсутствует его дескриптор при ручной сборке плагина - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь использовать плагин 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

Для этого существует запрос на получение , но, похоже, он не был обработан после первоначального создания.

Поэтому я попытался перестроить плагин самостоятельно, выполнив следующие шаги:

  1. Клон https://github.com/jenkinsci/jacoco-plugin
  2. Оформить заказ последней версии 3.0.4
  3. Удалить оператор if сверху в классе JacocoPublisher
  4. Сборка плагина (mvn package как говорится)

Я могу построить его без проблем. Следующие шаги:

  1. Перейдите к Jenkins -> Управление Jenkins -> Управление плагинами -> Дополнительно
  2. Загрузите сгенерированный файл 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, но не из моей пользовательской сборки) шаг сборки появляется снова, но опять-таки отсутствует нужное мне поведение.

Я что-то упустил?

Спасибо!

1 Ответ

0 голосов
/ 10 января 2019

После удаления оригинальной версии мне также пришлось удалить оставшиеся файлы плагинов jacoco из папки / plugins. После этого установка прошла нормально.

...