У нас есть множество Java-проектов, созданных с помощью Jenkins с помощью CI. Они прекрасно развернуты на нашем собственном сервере Nexus. Проблема в том, что нам нужно предоставить эти библиотеки третьей стороне, но без исходного кода. Итак, для каждого проекта в Nexus у нас есть:
- Репозиторий Выпусков для наших разработчиков (включая развернутый исходный код)
- Репозитории Snapshots для наших разработчиков (включая развернутый исходный код)
- Репозиторий сторонних выпусков (только JAR + POM)
- (и было бы неплохо иметь): Сторонний репозиторий моментальных снимков (только JAR + POM) для сторонних ночных сборок
Вопрос в том, как это обычно обрабатывается в мире Jenkins/Nexus? Я бы предпочел иметь одно задание в Jenkins, которое обрабатывает сборку CI и процесс выпуска (развертывание артефакта) «автоматически». В настоящее время я использую несколько профилей <distributionManagement>
в нашем «основном корневом файле pom.xml» (включенном во все проекты):
[...]
<profiles>
<profile>
<id>default</id>
<distributionManagement>
<repository>
<id>releases</id>
<name>Release</name>
<url>http://path/to/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Snapshot</name>
<url>http://path/to/nexus/content/repositories/snapshots/</url>
<uniqueVersion>false</uniqueVersion>
</snapshotRepository>
</distributionManagement>
</profile>
<profile>
<id>third-party</id>
<distributionManagement>
<repository>
<id>releases</id>
<name>Release</name>
<url>http://path/to/nexus/content/repositories/third-party/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Snapshot</name>
<url>http://path/to/nexus/content/repositories/third-party-snapshots/</url>
<uniqueVersion>false</uniqueVersion>
</snapshotRepository>
</distributionManagement>
</profile>
</profiles>
Из документов Maven кажется, что нельзя использовать несколько репозиториев в течение одного и того же жизненного цикла сборки, не говоря уже о том, что нам нужен/не нужен источник на основе целевого репо.
Я могу сделать трюк с созданием задания в Jenkins, с «Целями и параметрами» Maven: clean deploy -P third-party
, а затем добавить действие после сборки - «Развернуть артефакты в репозиторий Maven» с данными «по умолчанию», но в этом случае, только SNAPSHOT отправляются как в репозиторий, так и в артефакты, выпущенные через Подключаемый модуль выпуска Jenkins Maven помещаются только в один репозиторий.
Любые практические идеи, как я могу это сделать, не усложняя нашу иерархию задач CI?
Заранее спасибо!
merge-maven-repos
, которую можно использовать для другого поста. Так что в худшем случае нам нужно реализовать собственный плагин, мне просто интересно, есть ли общий способ сделать это даже с помощью Jenkins. - person Siaynoq   schedule 26.11.2012