2012-02-25 3 views
2

Мы собираемся использовать сервер сборки Hudson/Jenkins для сборки наших серверных приложений (просто вызываем maven) и запускаем тесты интеграции с ним. Мы собираемся подготовить 3 Hudson/Jenkins рабочих мест: для сборки, развертывания и запуска интеграционных тестов, которые называют друг друга в этом порядке. Все эти задания (сборка, развертывание, интеграционные тесты) будут выполняться в ночное время.Использование JUnit, Maven и Hudson/Jenkins для интеграционных тестов

Интеграционные тесты написаны с помощью JUnit и вызывается mvn test (который будет вызываться по заданию «тест» Hudson/Jenkins). Поскольку они требуют запуска и запуска сервера, мы должны запустить эту задачу «развернуть».

Имеет ли смысл? Есть ли какой-либо специальный сервер для развертывания приложения и запуска тестов или Hudson/Jenkins подходит для этого?

+0

Почему вы используете три разных задания? Какие серверы вы используете? (Какое приложение?) – khmarbaise

ответ

6

Это определенно имеет смысл, в основном вы имеете в виду трубопровод сборки. Существует Jenkins-plugin, чтобы визуализировать проекты вверх/вниз (вы создаете новый вид конвейера в jenkins).

Что касается развертывания серверного компонента, это зависит от того, какая технология/стек вы используете. Например, вы можете написать сценарий, который развертывает приложение в тестовой среде, используя шаг post-build в jenkins.

Другой вариант - использовать плагин maven для развертывания приложения. Вы можете разделить шаг развертывания в профиле и запустить только цель развертывания на этапе развертывания и т. Д.

В принципе существует множество опций, но идея построения трубопровода имеет большой смысл. Чтобы ознакомиться с строительными конвейерами и смежными темами, я хотел бы взглянуть на Continuous Deployment.

Для получения дополнительной информации, касающейся Дженкинса, взгляните на this video.

Имеет ли смысл? Есть ли какой-либо специальный сервер для развертывания приложения и запуска тестов, или Хадсон/Дженкинс в порядке?

Вы можете запустить приложение на том же сервере, что и jenkins, но это зависит от приложения. Если это зависит от конкретной настройки сервера, лучшим вариантом может быть запуск сервера в vm, но конфигурация в исходном элементе управления. Есть много инструментов, чтобы помочь автоматизировать этот процесс, в верхней части моей головы вы Puppet, Chef и Vagrant

2

В зависимости от технологии вашего сервера, вы могли бы сделать все это в одном проекте Hudson, выполняя вашу интеграцию тесты с использованием Maven's Failsafe plugin вместо Surefire.

Это позволяет начать и развернуть перед выполнением интеграционных тестов и завершить работу вашего сервера после их завершения. Он также позволяет отделить ваши интеграционные тесты от ваших модульных тестов.

Для приложений Java EE вы можете выполнить шаги старт/разворачивание/стоп, используя Cargo, или использовать встроенный Jetty и Jetty Maven plugin.

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