Как получить покрытие кода в Jenkins с помощью Jacoco и нескольких модулей?
Структура моего кода выглядит следующим образом:
События
сообщения
другое-код
функциональные тесты
В скрипте сборки для jacoco сначала нужно скопировать все классы и использовать этот каталог классов для запуска инструмента. Не могли бы вы описать шаги записи целевых каталогов здесь. Я имею в виду, как я могу упомянуть каталог, в котором выполняется покрытие кода.
При сборке каждая папка имеет свою собственную целевую папку с классами в стороне их.
Вот шаги:
- построить проект как работу в Дженкинсе
- развернуть его на пользовательской стадии
- выполнить задание отчета jacoco в Jenkins
Jacoco report job explanation:
-
Шаг сборки-maven 3.3.3 цели-чистый тест и testsuite, детали этапа пользователя и другая информация передаются.
-
Post steps-execute shell
Не удалось отформатировать и вставить сюда, поэтому загружено здесь: https://zerobin.net/?8a988cd05bf3d752#fbzMlW1b7uzD+HZnmwnd9WjQYBI3j95Q7DCIx6q+l0U=
-
Вызов целей maven верхнего уровня-maven 3.3.3 -Ф jacoco_pom.xml jacoco: дамп antrun:run@report
Переменная clasDir
, которая использовалась в вставке оболочки, должна иметь классы. До сих пор я делал это в начале сценария оболочки.
mkdir -p target/classes
cp -R messages/target/classes target/classes
И множество clsDir = target/classes
,
events
, other-code
а также связать источники.
Мне нужна помощь в том, как мне его настроить. Основная цель заключается в создании отчетов о покрытии кода функциональными тестами.
Правка:
Ответ: Ниже Ответ помог, но все это должно было быть сделано с помощью команд оболочки, а не какого-либо пользовательского интерфейса. Так, клонирование РЕПО, выполнение mvn clean package -DskipTests
и копирование по всем подпапкам первого уровня из всех папок модуля помогло, но затем оно показало ошибку в покрытии несоответствие данных выполнения для файлов классов . Это означает,что класс instrumented и класс, который мы используем для покрытия, строятся отдельно разными JVM (один в Jenkins, другой в stage).
1 ответ:
Чтобы включить несколько каталогов классов, изменив конфигурацию плагина Jenkins JaCoCo, вам потребуется изменить поле "путь к каталогам классов".
Например, если вы хотите включить какие-либо классы в каталоги 'events' и 'other-code', вы должны добавить следующее в раздел 'путь к каталогам классов':
**/events,**/other-code
Имейте в виду, что если вы хотите добавить несколько каталогов, Вы должны отделить каждый из них запятой, и не может быть никаких пробелов (из-за ошибки с плагином). Примечание: эта ошибка запятых относится ко всем текстовым полям в этой конфигурации плагина.
Вот моя рабочая конфигурация плагина JaCoCo:
Как уже упоминалось в комментариях, одним из решений этой проблемы является использование любого инструмента сборки, с которым вы имеете дело (Ant, Maven, Gradle), чтобы удалить
target
(т. е.: jar, war и т. д.) в общий каталог и просто наведите туда плагин jacoco.