Итак, в настоящее время я пытаюсь реализовать рабочий процесс CI/CD для моего проекта, который будет выпущен для общественности. Потому что то, что я выпускаю, является скорее каркасом, я признаю, что люди возьмут мой код, изменят его, как они сочтут нужным, и сами сделают свои изменения (если они захотят). Поэтому я не хочу ничего налагать на их процесс сборки (т. Е. Правила checkstyle, ненужные зависимости и т. Д.).Реализация потока CI/CD с помощью Gradle, Jenkins и Sonar
Так что путь I (лично) решил написать фреймворк, чтобы использовать Gradle для построения, а также для фиксации, начать сборку Jenkins, которая будет запускать все модульные тесты, выполнять статический анализ, а затем упаковывать необходимые файлы в формате, который люди могут загрузить.
- Написать код
- Run Local Unit Tests
- Commit Code
- Стартовое Дженкинс Построить
- Run Unit Tests
- Run Интеграционные тесты
- Выполнить анализ на результат
- Загрузить анализ на сервер SonarQube
- Возьмите файлы сборки и пакет в двоичные и исходные версии.
Моя проблема, однако, в том, что я не могу настроить аспект Сонара в Дженкинсе. Как я уже сказал, я не хочу навязывать свои правила чужому процессу, поэтому я отделил функциональность как шаг Дженкинса. Однако, если я выполнил шаг сонара, он полностью исключит аспект модуля тестирования. Я не могу определить причину. Однако, если я модифицировать Gradle файл включить
apply plugin: 'sonar-runner'
и добавьте Invoke Gradle Task
шаг вместо задачи эхолота, она отлично работает.
Я иду об этом неправильно? Если я включу эту часть в файл Gradle, я получу то, что мне нужно, но я навязываю требование Gradle о том, кто загружает мой код (возможно, используя Maven вместо этого). Есть ли способ обойти это?