Jenkinsで構築されたCIである多数のJavaプロジェクトがあります。これらは、独自のNexusサーバーに適切にデプロイされます。問題は、これらのライブラリをサードパーティに提供する必要があることですが、ソースコードはありません。したがって、プロジェクトごとに、Nexusには次のものがあります。
- 開発者のリポジトリをリリースします(デプロイされたソースコードを含む)
- 開発者向けのスナップショットリポジトリ(デプロイされたソースコードを含む)
- サードパーティのリリースリポジトリ(JAR + POMのみ)
- (そして持っているとよいでしょう):サードパーティのナイトリービルド用のサードパーティのスナップショットリポジトリ(JAR + POMのみ)
問題は、これは通常、Jenkins/Nexusの世界でどのように処理されるのかということです。CIビルドとリリース(アーティファクトのデプロイ)プロセスを「自動的に」処理する単一のジョブをJenkinsに配置したいと思います。現在<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の「目標とオプション」を使用してJenkinsでジョブを作成し、clean deploy -P third-party
ビルド後のアクション(「デフォルト」データを使用して「アーティファクトをMavenリポジトリにデプロイする」)を追加することでトリックを実行できますが、この場合はSNAPSHOTはリポジトリに送信され、JenkinsMavenリリースプラグインを介してリリースされたアーティファクトは1つのリポジトリにのみ送信されます。
CIジョブ階層を過度に複雑にすることなくこれを行うための実用的なアイデアはありますか?
前もって感謝します!