У нас есть многочисленные Java-проекты, которые являются CI, построенными с Jenkins. Они развернуты на нашем собственном сервере Nexus. Проблема в том, что мы должны предоставить эти библиотеки третьей стороне, но без исходного кода. Поэтому для каждого проекта в Nexus мы имеем:
- Освобождает репозиторий для наших разработчиков (включая развернутый исходный код)
- Репозитории снимков для наших разработчиков (включая развернутый исходный код)
- Репозиторий релиза третьей стороны (только JAR + POM)
- (и было бы хорошо иметь): Третий сторонний репозиторий снимков (только JAR + POM) для сторонних ночных сборников
Вопрос: как это обычно обрабатывается в мире Дженкинса/Нексуса? Я бы предпочел, чтобы в 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, похоже, нет способа использовать несколько репозиториев в течение одного жизненного цикла сборки, не говоря уже о том, что нам нужен/не нужен источник, основанный на целевом репо.
Я могу сделать трюк с созданием задания в Дженкинсе с помощью Maven "Цели и параметры": clean deploy -P third-party
, а затем добавление действия Post-build - "Развертывание артефактов в репозиторий Maven" с данными по умолчанию - но в этом случае только SNAPSHOTs собираются как для репо и артефактов, выпущенных через Jenkins Maven Release Plug-in входят только в один репозиторий.
Любые практические идеи, как я могу это сделать, не нарушая нашу иерархию работы CI?
Спасибо заранее!