Непрерывное развертывание приложения на основе OSGi -на jenkins

Потратив пару часов на то, чтобы понять, как заставить непрерывное развертывание работать в случае OSGi -приложения , я, наконец, задаю свой первый вопрос о stackoverflow, надеясь, для некоторых указаний на то, что я мог сделать неправильно или пропустить -почему-то я чувствую, что нахожусь на ложном пути...

Вот чего я хочу добиться:

  1. собрать несколько пакетов и установить их в репозиторий maven (здесь нет проблем, используя bnd)

  2. теперь, когда все пакеты, составляющие мое приложение (, проходят все тесты и т. д. ), я хочу развернуть и запустить приложение, то есть запустить некоторую инфраструктуру OSGi, используя эти пакеты.

  3. Запуск не является проблемой -"mvn pax :provision -Dframework=equinox" делает свое дело. Мое приложение запускается причалом, поэтому его легко проверить через браузер, чтобы убедиться, что все в порядке (в дополнение ко всем тестам)

  4. Но теперь, пытаясь быть "непрерывным" , в следующий раз, когда я захочу применить эту процедуру, мне действительно следует сначала закрыть работающий экземпляр моего приложения (освобождение хотя бы используемого порта ). Итак, чтобы перезапустить все, мне каким-то образом нужно сначала закрыть старую установку.

И здесь начинается мой вопрос :Помогает ли мне что-нибудь в этом? Я понимаю, что есть плагин maven -deploy -, но это кажется полезным только при развертывании некоторого файла WAR/EAR в какой-либо стандартный контейнер приложения (без необходимости перезапуска. ).

Мне действительно нужно только запустить какой-нибудь скрипт, чтобы запустить среду OSGi -, а затем, в следующий раз, чтобы корректно закрыть ее , прежде чем я запущу ее снова. Для tomcat, jetty, jboss и т.п. есть некоторые сценарии shutdown.sh или инструкции mvn jetty :stop , но действительно ли мне нужно самому писать такие сценарии? ? Вот где я думаю, что начинаю идти по неправильному пути, у кого-то, должно быть, были эти проблемы до меня, и я думаю, что они решили их;)

Я понял, что могу каким-то образом попытаться использовать JMX или использовать консоль telnet для доступа к работающему экземпляру, чтобы выполнить команду «стоп 0», но это кажется неправильным .

Процессы, запущенные из jenkins, должны компилировать/создавать/развертывать проекты, но не запускать длинные -запущенные потоки, я думаю, поэтому мне каким-то образом нужно запустить какой-то процесс «снаружи», который я хочу сначала убить в следующий раз, когда я попробую это снова.

Любые идеи? Может быть, я что-то упускаю? Заранее спасибо за любой вклад в это!

9
задан evandor 2 June 2012 в 09:02
поделиться