2015-03-24 4 views
2

Есть ли способ опубликовать как npm, так и репозиторий maven в задании Дженкинса, используя один файл pomb maven2? Файл сборки pomb pomb содержит два модуля, один из которых является стандартным модулем jar, а другой - модулем pom, который использует плагин exec для вызова целевых сценариев npm, которые создают проект javascript. Jenkins настроен на публикацию зависимостей maven с корпоративным сервером nexus, когда сборка завершается успешно.Как публиковать npm и maven в одном и том же maven-реакторе с использованием jenkins

Макет проекта:

project/ 
    pom.xml 
    npm-module/ 
    pom.xml 
    mvn-module/ 
    pom.xml 

Это прекрасно работает для МВН-модуля и NPM-модуль строит. Но теперь трюк публикует npm-модуль. Дженкинс, похоже, разрешает только одну публикацию для задания пост-сборки nexus.

Есть ли способ сделать это? Может ли кто-нибудь объяснить, как настроить Jenkins и файл pom для сборки реактора, который публикует модули npm и maven для nexus?

+0

UPDATE: Я заменил плагин exec https://github.com/eirslett/frontend-maven-plugin, который делает npm, gulp и grunt граждан первого класса в maven, но я до сих пор не знаю, как получить «jenkins публиковать в maven repositories» post build step, чтобы также публиковать артефакты npm. – Doug

ответ

2

У меня есть ответ, но мне бы хотелось услышать другие идеи.

Дженкинс Настройка

  • создать предварительный шаг "выполнение оболочки", чтобы установить НПЙ _auth и электронная почту поле

    НОЙ конфигурация установлена ​​_auth authhashstring
    НОЙ конфигурацию набор электронной почту [email protected]

  • добавить развертывание на «цели и параметры» maven

    -Dmaven.test.failure.ignore = истинные

    чистый Deploy -Dfullclean = истинный

  • добавить "файл настроек из файловой системы"

    конфигурации/Maven-settings.xml

Примечание: используйте цель развертывания, вместо того, чтобы использовать jenkins «развертывание артефактов на maven», потому что он не использует maven, поэтому ваши номера в npm не будут вызваны.

Настройка pom.xml

В NPM-модуль/pom.xml использование фронтэнда-Maven-плагин и добавить казни для установки узла/НМП и НПМ опубликовать. Убедитесь, что публикация прикреплена к фазе развертывания. instructions были достаточно хороши. Или вы можете использовать плагин exec для выполнения команды npm publish на этапе развертывания.

В mvn-module/pom.xml добавьте дистрибутивManagement/snapshotRepository для местоположения репозитория моментальных копий.

Maven settings.xml Настройка

Ставит Maven settings.xml с именем пользователя и паролем в проекте в директории конфигурации, как это, МВНЫ-модуль/конфигурация/Maven-settings.xml. Это не идеально, но мы можем заменить имя пользователя и пароль w/properties, которые могут быть установлены из maven/jenkins, я думаю. Jenkins будет настроен для чтения этого файла из этого местоположения.

Настройка package.json

В NPM-модуль/package.json добавить запись publishConfig/реестра

"publishConfig": { 
    "registry": "url/nexus/content/repositories/npm-snapshots/" 
} 

Настройка Nexus

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

Таким образом, с учетом этого вопроса, теперь сборка jenkins будет публиковать модули java и node в своих соответствующих хранилищах из одной работы Jenkins, используя многомодовый реактор pom верхнего уровня.