Mavenを使用しています。インフラストラクチャをセットアップして、自動的に構築されたアーティファクトがNexusリポジトリに移動するようにします。そして、それらは開発者が使用できます。
Jenkinsのプロジェクトには1つの仕事が既に設定されています。そして、同じサーバー上でNexusをセットアップしました。
開発者のPCでは、デフォルトのMaven設定をC:\ Users {user} .m2\settings.xmlにコピーしてこのセクションを追加しました。参照:
<mirror>
<!--This sends everything else to /public -->
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://myserver:8081/nexus/content/groups/public</url>
</mirror>
(私は Nexusを使用したリポジトリ管理 本に従ってください)
次のステップは何ですか? Jenkinsの仕事にmvn install
?会社のアーティファクトのNexusリポジトリを作成する方法は?
Nexusにアーティファクトをデプロイするには、pomに distributionManagement section を含める必要があります。 Nexusには、スナップショットとリリースの両方に対して既にセットアップされた特定のリポジトリが付属しています。 Mavenがスナップショットをデプロイし、アーティファクトを正しいリポジトリにリリースできるように、それぞれに正しいパスを指定する必要があります。その後、アーティファクトをデプロイするたびに(通常はmvn deploy
または mavenリリースプラグイン を使用すると、アーティファクトがそこにデプロイされます。 Nexusはデフォルトで書き込み認証を有効にしているため、アーティファクトをデプロイするすべての人のsettings.xmlに、正しい資格情報を持つ server section を追加する必要があります。 Jenkinsは他のユーザーとほとんど同じように扱うことができます。ビルドとしてdeploy
を実行すると、すべてのビルドがNexusにデプロイされます。 Jenkinsジョブの後半でアーティファクトを実行する場合に備えて、アーティファクトを展開するためのビルド後アクションもあります。
プロジェクトpom.xmlに変更を加える必要はありませんでした。代わりに、ジェンキンスの「ビルド後のアクション」で「Mavenリポジトリにアーティファクトをデプロイする」を選択し、「詳細」を選択してリポジトリURLをhttp://nexusserver:8081/nexus/content/repositories/releases
およびリポジトリIDをdeploymentRepo
に。
の中に ~/.m2/settings.xml
追加したジェンキンスマシン
<settings>
<servers>
<server>
<id>deploymentRepo</id>
<username>deployment</username>
<password>deployment123</password>
</server>
</servers>
...
</settings>
更新pom.xml
<distributionManagement>
...
<repository>
<id>deploymentRepo</id>
<name>Internal Releases</name>
<url>http://nexusserver:8081/nexus/content/repositories/releases</url>
</repository>
...
</distributionManagement>
その後、Maven ~/.m2/settings.xml
追加(これはNexusのデフォルトの展開ユーザーです)
<server>
<id>deploymentRepo</id>
<username>deployment</username>
<password>deployment123</password>
</server>
mvn deploy
その後、標準のアーティファクトと同様に、デプロイされたアーティファクトを任意のプロジェクトで使用できます。この場合、pom.xmlに追加します
<!-- company repositories -->
<repository>
<id>deploymentRepoReleases</id>
<name>Releases (Nexus)</name>
<url>http://nexusserver:8081/nexus/content/repositories/releases/</url>
</repository>
<repository>
<id>deploymentRepoSnapshots</id>
<name>Snapshots (Nexus)</name>
<url>http://nexusserver:8081/nexus/content/repositories/snapshots/</url>
</repository>
更新:後でスナップショットリポジトリから離れて、maven-release-plugin
リリースタイプのリポジトリのみが必要です。
Maven-release-pluginのmavenゴール引数を使用すると、nexusリポジトリ認証を渡すことができます
-Dusername=<> -Dpassword=<>
jenkinsプロジェクト、mavenコマンドライン、nexusリポジトリ認証で使用
これがMavenの質問ではなくJenkinsの質問である場合、ほとんどの場合、組み込みのJenkinsの「アーティファクトをMavenリポジトリにデプロイする」ポストビルドアクションを使用することをお勧めします。
私の意見での利点: