2017-02-16 34 views
2

Моя структура кода выглядит следующим образом:Как получить покрытие кода в Jenkins с помощью Jacoco и нескольких модулей?

события
сообщения
другой-код
функциональные тесты

В сценарии сборки для jacoco, сначала нужно скопировать все классы и используйте этот каталог классов для запуска инструмента. Не могли бы вы описать шаги по целевым каталогам здесь. Я имею в виду, как я упоминаю каталог, на котором можно запустить покрытие кода.

После сборки каждая папка имеет свою целевую папку с классами, расположенными рядом с ними.

Вот шаги:

  1. Построить проект как работу в Дженкинс
  2. развернуть его на пользовательском этапе
  3. Run jacoco отчет Работа в Дженкинс

Jacoco отчет работы объяснение :

  1. Build step - maven 3.3.3 Голы - чистый тест и testuite, детали пользовательского этапа и другая информация передаются.

  2. сообщение шаги - Выполнить оболочки

    Невозможно отформатировать и вставить здесь, так загружены здесь: https://zerobin.net/?8a988cd05bf3d752#fbzMlW1b7uzD+HZnmwnd9WjQYBI3j95Q7DCIx6q+l0U=

  3. Invoke верхние цели уровня Maven - Maven 3.3.3 -f jacoco_pom.xml jacoco: свалка antrun: запустить @ отчет

в clasDir переменную, которая была использована в пасте оболочки должны иметь классы. Пока что я сделал это в начале сценария оболочки.

mkdir -p target/classes 
cp -R messages/target/classes target/classes 

и установить clsDir = target/classes,

Таким образом, я получил отчет об этом модуле. Мой testuite содержал только один класс. Я хочу включить другие модули, например events, other-code, а также ссылки на источники.

Мне нужна помощь в том, как мне настроить его. Основная цель - генерировать отчеты о покрытии кода функциональных тестов.

EDIT:

Ответ: Ниже ответ помог, но все это было быть сделано с командой оболочки не любой пользовательского интерфейса. Итак, клонирование репо, сделав mvn clean package -DskipTests и скопировав все подпапки первого уровня из всех папок модуля, помогло, но затем оно показало ошибку в охвате Несоответствие данных выполнения для файлов классов.Это означает, что класс инструментов и класс, который мы используем для покрытия, создаются отдельно разными JVM (один в Jenkins, другой, который развертывается на стадии).

Таким образом, решение было не клонировать и не перекомпилировать их, а загружать манифест из хранилища развертывания и распаковывать все банки. Таким образом, у меня были все классы в той же версии.

+0

Вы ссылаетесь на некоторые сценарии сборки, но ИМО неясно, что это значит - существует множество различных инструментов сборки, и есть много способов выполнить JaCoCo в зависимости от инструмента построения - Maven Plugin, Ant Tasks и т. Д. не могли бы вы прояснить свой вопрос, желательно с более чистым примером - см. http://stackoverflow.com/help/mcve? – Godin

+0

, пожалуйста, проверьте сейчас. – xploreraj

ответ

2

Чтобы включить несколько каталогов классов, изменив конфигурацию плагина Jenkins JaCoCo, вам нужно будет изменить поле «Путь к классам».

Например, если вы хотите включить все классы в рамках «событий», каталогов и «другой-код», вы бы добавить следующее «Пути к классовым директориям» разделу:

**/events,**/other-code 

Keep в виду, что если вы хотите добавить несколько каталогов, , вы должны разделить их по запятой и не может быть пробелов (из-за ошибки с плагином). Примечание. Эта запятая ошибка относится ко всем текстовым полям в этой конфигурации плагина.

Вот мой рабочий JaCoCo конфигурации плагина: Example JaCoCo Plugin Configuration

EDIT: Что вы можете сделать, это запустить MVN цель для чистой сборки, а затем скопировать цель каждого модуля в общий каталог под названием «классы ». Таким образом, все классы будут находиться в общем месте, на которое jacoco может ссылаться, анализируя результаты покрытия.

+1

Это помогло. Спасибо за подсказку. То, что я сделал, - это запустить цель mvn для чистой сборки, а затем скопировать «цель» каждого модуля в общий каталог, называемый «classes», таким образом, все классы были в общем месте, которое может быть передано jacoco при анализе покрытия , – xploreraj

+1

Если вы используете трубопроводы и файл Jenkins, см.: https://stackoverflow.com/a/48685604/1279002 – theINtoy

 Смежные вопросы

  • Нет связанных вопросов^_^