web-dev-qa-db-ja.com

Maven、Jenkins、Nexusを使用したインフラストラクチャ

Mavenを使用しています。インフラストラクチャをセットアップして、自動的に構築されたアーティファクトがNexusリポジトリに移動するようにします。そして、それらは開発者が使用できます。

Jenkinsのプロジェクトには1つの仕事が既に設定されています。そして、同じサーバー上でNexusをセットアップしました。

開発者のPCでは、デフォルトのMaven設定をC:\ Users {user} .m2\settings.xmlにコピーしてこのセクションを追加しました。参照:

単一のNexusを使用するためのMavenの設定

Maven設定リファレンス

<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リポジトリを作成する方法は?

32
Paul Verest

Nexusにアーティファクトをデプロイするには、pomに distributionManagement section を含める必要があります。 Nexusには、スナップショットとリリースの両方に対して既にセットアップされた特定のリポジトリが付属しています。 Mavenがスナップショットをデプロイし、アーティファクトを正しいリポジトリにリリースできるように、それぞれに正しいパスを指定する必要があります。その後、アーティファクトをデプロイするたびに(通常はmvn deployまたは mavenリリースプラグイン を使用すると、アーティファクトがそこにデプロイされます。 Nexusはデフォルトで書き込み認証を有効にしているため、アーティファクトをデプロイするすべての人のsettings.xmlに、正しい資格情報を持つ server section を追加する必要があります。 Jenkinsは他のユーザーとほとんど同じように扱うことができます。ビルドとしてdeployを実行すると、すべてのビルドがNexusにデプロイされます。 Jenkinsジョブの後半でアーティファクトを実行する場合に備えて、アーティファクトを展開するためのビルド後アクションもあります。

17
Ryan Stewart

プロジェクト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>
17
Steve Brown

更新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リリースタイプのリポジトリのみが必要です。

12
Paul Verest

Maven-release-pluginのmavenゴール引数を使用すると、nexusリポジトリ認証を渡すことができます

-Dusername=<> -Dpassword=<>

jenkinsプロジェクト、mavenコマンドライン、nexusリポジトリ認証で使用

1
Anamika

これがMavenの質問ではなくJenkinsの質問である場合、ほとんどの場合、組み込みのJenkinsの「アーティファクトをMavenリポジトリにデプロイする」ポストビルドアクションを使用することをお勧めします。

私の意見での利点:

  • より移植性が高く(ライフサイクルのさまざまな段階でさまざまなリポジトリを使用します)、各Jenkinsインスタンスは自身のリポジトリを認識します
  • Jenkinsの仕事を読んでいる人にとって、より明白です
  • ジェンキンスの物事のやり方にもっと沿って
1
ISparkes