Как реализовать непрерывное развертывание с помощью Nexus и Jenkins

Я пытаюсь внедрить систему непрерывного развертывания и, похоже, не могу найти хороший ответ на нашу проблему. Мы используем Jenkins для запуска сборки maven для создания наших артефактов и развертывания их в Nexus. Я вижу несколько проектов, которые объединяют все в один файл war или tar, извлекают один файл на запрос из Nexus по имени и развертывают его на сервере приложений, но это требует от них заранее знать, какие версии у них есть. В моем проекте есть довольно много jar/wars/binary среди других артефактов, которые не развертываются с помощью сервера приложений. Что мы хотим сделать, так это иметь возможность извлечь любой моментальный снимок или выпуск версии программного обеспечения из нексуса и либо сгенерировать установочный пакет, либо доставить его непосредственно на удаленный сервер.

Уточнение: я хочу, чтобы QA или разработчики могли выбрать версию из Jenkins; где Jenkins будет опрашивать Nexus на наличие доступных версий, а затем выполнять автоматическое развертывание на сервер из Nexus.

Есть ли простой способ nexus/maven для передачи программного обеспечения в систему тестирования?

Итак, есть ли способ опросить нексус, чтобы определить, какие версии доступны через ant/ivy, Jenkins, maven, gradle? Я напишу что-нибудь еще, если это поможет.

Я вижу, что аналогичный вопрос был задан здесь: Как мне выбрать артефакт из Nexus в задании Hudson/Jenkins?, но спустя 9 месяцев на него еще нет ответа.


person user1442498    schedule 11.07.2012    source источник
comment
возможный дубликат Как мне выбрать артефакт из Nexus в задании Hudson/Jenkins?   -  person Mark O'Connor    schedule 13.07.2012
comment
В качестве альтернативы вы можете рассмотреть возможность использования Jenkins для сборки, nexus для хранения и третьего инструмента для развертывания.   -  person EricMinick    schedule 16.07.2012


Ответы (1)


Nexus предоставляет стандартную возможность просмотра HTTP. Вы можете просмотреть репозиторий через HTTP и посмотреть, что доступно.

Я все еще не понимаю вашего варианта использования. Если вы знаете, какие версии проекта вам нужны, то в чем проблема?

Проще всего было бы написать установщик pom.xml, в котором есть заполнитель ${} для версии, которую вы хотите для артефактов, а затем вызвать mvn с mvn package -Dproduct.version=1.0.0

Если вы используете контейнер, у PAX есть плагины, которые позволяют вам создавать определенные артефакты, такие как mvn:myGroup/myArtifact/myVersion, и он будет автоматически извлекаться из Maven.

Nexus не творит чудес. Это все хорошо известные пути по URL-адресу групп/artifactId/версий.

person Andrew T Finnell    schedule 11.07.2012
comment
Я, вероятно, должен был сказать, что Maven на самом деле не управляет всем проектом. Таким образом, зависимости для всех java-файлов настраиваются в maven, но весь С++ и конфигурация управляются через другую систему сборки. Не будет ли запуск пакета mvn означать, что мне придется создать новый набор зависимостей, включающий все мои пакеты из обеих систем? - person user1442498; 12.07.2012
comment
В итоге я просто создал полный установочный пакет с помощью maven и загрузил его как артефакт в Nexus. В jenkins задание, которое выполняет сборку пакета, анализирует URL-адрес пакета установки nexus, чтобы получить все доступные пакеты в качестве вариантов для QA/dev для выполнения развертывания. Затем я написал собственный деплойер, чтобы получить нужный пакет с помощью wget. - person user1442498; 17.07.2012