Страницы

Поиск по вопросам

суббота, 4 января 2020 г.

Настройка и интеграция Jenkins и Gradle с нуля

#java #git #юнит_тесты #gradle #jenkins


Туториалов много, но каждый охватывает только часть процесса, не могу найти простой
и понятный для новичка, охватывающий весь процесс.

Что я хочу: 


Есть Java приложение (причем, это может быть как web приложение, запускаемое в том
же Tomcat, либо обычное консольное приложение или библиотека, собираемая в jar  )
Написаны Unit и интеграционные тесты
Приложение собирается gradle-ом.
Развернут Artifactory с репозиторием, куда я хочу деплоить сборки. 


Собственно процесс, который я хочу настроить:


При каждом пуше на сервере прогоняются unit-тесты, интеграционные тесты, анализируется
покрытие кода тестами, codestyle и т.д. 
Если все хорошо, сборка деплоится в Artifactory, а также (если приложение - веб),
обновляется и перезапускается на dev сервере.
Либо иметь некоторую страничку, представляющее собой таблицу: ссылка на скачивание
- commit message (для примера: http://abrok.eu/stockfish/)
Если что-то пошло не так, ответ с описанием приходит на почту (например)


Было бы здорово посмотреть туториал с самого нуля, когда создается helloWorld Java
проект, как настраивается Jenkins, что происходит, когда делается commit и т.д. Т.е.
туториал, где одновременно с настройкой Jenkins пишется и изменяется java код. 

Может быть не обязательно полностью описанный мной процесс, но какой-нибудь туториал,
который показывает упрощенно процесс разработки (изменение, написание тестов, коммиты)
java приложение при работающем jenkins. 
    


Ответы

Ответ 1



Если сфокусироваться на организации процесса сборки средствами Jenkins, получится примерно следующее: При каждом пуше на сервере прогоняются unit-тесты, интеграционные тесты, анализируется покрытие кода тестами, codestyle и т.д. Для проекта (job) задается триггер сборки "Опрашивать SCM об изменениях" и расписание проверки Git-а на наличие свежих коммитов, например раз в 10 минут. Расписание задается в формате crontab: H/10 * * * *. Другой вариант - выбрать триггер "Trigger builds remotely (e.g., from scripts)" и настроить post-commit hook в репозитории, который будет уведомлять Jenkins о наличии новых коммитов. Для этого достаточно дернуть curl-ом адрес http:///job//build. Прогон тестов реализуется вызовом gradle. Установите на билдсервер Gradle Plugin и в качестве основного шага сборки вызывайте gradle, как если бы вы запускали его на локальной машине. Если сборка будет включать в себя прогон тестов, jenkins сохранит информацию о результатах. Если все хорошо, сборка деплоится в Artifactory, а также (если приложение - веб), обновляется и перезапускается на dev сервере. Ставите Artifactory Plugin и добавляете послесборочный шаг "Deploy artifacts to Artifactory". Редеплой приложение лучше вынести в отдельный проект, который будет вызываться после основной сборки через Послесборочную операцию "Build other project". Чтобы "дотянуться" из проекта деплоя до артефактов основной сборки, установите Copy Artifacts Plugin. Вам будет доступен шаг сборки "Copy artifacts from another project", который скопирует нужные файлы из исходной (upstream) сборки. Саму процедуру деплоя можно реализовать средствами Jenkins (например, Deploy Plugin), средствами gradle (например, gradle-cargo-plugin) или просто shell-скриптом. Если что-то пошло не так, ответ с описанием приходит на почту (например) Это Jenkins умеет "из коробки", достаточно включить в настройках проекта флажок "E-mail Notification". Но я рекомендую поставить Email-ext plugin - он позволяет гибче настраивать события для письма и содержимое.

Комментариев нет:

Отправить комментарий