Jenkinsで構築されたCIであるJavaプロジェクトが多数あります。これらは、独自のNexusサーバーに正常にデプロイされます。問題は、これらのライブラリをサードパーティに提供する必要があることです。ソースコード。したがって、プロジェクトごとに、Nexusには次のものがあります。
問題は、これは通常、ジェンキンス/ネクサスの世界でどのように処理されるのかということです。 CIビルドとリリース(アーティファクトのデプロイ)プロセスを「自動的に」処理する単一のジョブをJenkinsに配置したいと思います。現在、「メインルートpom.xml」(すべてのプロジェクトに含まれています)で複数の<distributionManagement>
プロファイルを使用しています。
[...]
<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リリースプラグイン を介してリリースされたアーティファクトのみが1つのリポジトリにのみアクセスします。
CIジョブ階層を過度に複雑にすることなくこれを行うための実用的なアイデアはありますか?
前もって感謝します!
これはすべてNexusで処理できます。事前設定された例「ソースを除くすべて(Maven 2)」で使用されているようなパターンを含むリポジトリターゲットを作成し、groupid、artifactid、さらにはバージョンを制限する別のパターンでそのターゲットをさらに絞り込みます。
次に、そのリポジトリターゲットを使用する特権を作成し、それぞれのアクセス権を付与するユーザーまたはロールに割り当てます。
複数の展開などを行う必要はありません。
http://books.sonatype.com/nexus-book/reference/repository-targets.html を参照してください。
Maven Wagon Plugin を使用して、デプロイフェーズで単一のjarをリモートの場所にアップロードできます。