NexusへのMavenのリリース

NexusへのMavenリリース

1. 概要

このシリーズの前回の記事では、deployment process with Maven to Nexusを設定しました。 この記事では、プロジェクトのpomとJenkinsジョブの両方でRelease Process with Mavenを構成します。

2. pomのリポジトリ

MavenがNexusリポジトリサーバーにリリースできるようにするには、distributionManagement要素を介してdefine the repository情報を取得する必要があります。


   
      nexus-releases
      http://localhost:8081/nexus/content/repositories/releases
   

ホストされたリリースリポジトリはNexusですぐに使用できるため、明示的に作成する必要はありません。

3. MavenのSCMpom

リリースプロセスはプロジェクトのソース管理と相互作用します。つまり、最初にpom.xml<scm>要素を定義する必要があります。


   scm:git:https://github.com/user/project.git
   http://github.com/user/project
   scm:git:https://github.com/user/project.git

または、gitプロトコルを使用します。


   scm:git:[email protected]:user/project.git
   scm:git:[email protected]:user/project.git
   scm:git:[email protected]:user/project.git

4. リリースプラグイン

リリースプロセスで使用される標準のMavenプラグインはmaven-release-pluginです–このプラグインの構成は最小限です:


   org.apache.maven.plugins
   maven-release-plugin
   2.4.2
   
      [email protected]{project.version}
      true
      releases
   

ここで重要なのは、releaseProfiles構成により、実際にはMavenプロファイル(releasesプロファイル)がリリースプロセス中にアクティブになることです。

nexus-staging-maven-pluginを使用してnexus-releasesNexusリポジトリへのデプロイを実行するのはこのプロセスです。


   
      releases
      
         
            
               org.sonatype.plugins
               nexus-staging-maven-plugin
               1.5.1
               
                  
                     default-deploy
                     deploy
                     
                        deploy
                     
                  
               
               
                  nexus-releases
                  http://localhost:8081/nexus/
                  true
               
            
         
      
   

プラグインは、展開プロセス(skipStaging=true)に対して、previouslyと同じリリースプロセスwithout the staging mechanismを実行するように構成されています。

また、展開プロセスと同様に、Releasing to Nexus is a secured operation –したがって、Nexusからすぐに使用できるdeploymentユーザーを再度使用します。

また、グローバルsettings.xml%USER_HOME%/.m2/settings.xml)でnexus-releasesサーバーの資格情報を構成する必要があります。


   
      nexus-releases
      deployment
      the_pass_for_the_deployment_user
   

これは完全な構成です

5. リリースプロセス

リリースプロセスを小さな集中的なステップに分けましょう。 プロジェクトの現在のバージョンがSNAPSHOTバージョン(たとえば0.1-SNAPSHOT)の場合、リリースを実行しています。

5.1. リリース:クリーン

Cleaning a Releaseは:

  • リリース記述子を削除します(release.properties

  • バックアップPOMファイルを削除します

5.2. リリース:準備

リリースプロセスの次の部分はPreparing the Releaseです。この意志:

  • いくつかのチェックを実行します-コミットされていない変更がなく、プロジェクトがSNAPSHOT依存関係に依存しないようにします

  • pomファイル内のプロジェクトのバージョンを完全なリリース番号に変更します(SNAPSHOTサフィックスを削除します)–この例では–0.1

  • プロジェクトtestスイートを実行します

  • 変更をコミットしてプッシュする

  • この非SNAPSHOTバージョン管理コードからtagを作成します

  • pom内のプロジェクトのincrease the version –この例では–0.2-SNAPSHOT

  • 変更をコミットしてプッシュする

5.3. リリース:実行

リリースプロセスの後半はPerforming the Releaseです。この意志:

  • SCMからのチェックアウトリリースタグ

  • リリースされたコードをビルドしてデプロイする

プロセスのこの2番目のステップは、準備ステップの出力であるrelease.propertiesに依存しています。

6. ジェンキンスについて

Jenkinsは2つの方法のいずれかでリリースプロセスを実行できます。独自のリリースプラグインを使用するか、正しいリリースステップを実行する標準のMavenジョブでリリースを実行するだけです。

リリースプロセスに焦点を当てた既存のJenkinsプラグインは次のとおりです。

ただし、リリースを実行するためのMavenコマンドは非常に単純なので、操作を実行する標準のJenkinsジョブを定義するだけで済みます。プラグインは不要です。

したがって、新しいJenkinsジョブ(maven2 / 3プロジェクトのビルド)では、releaseVersion=0.1developmentVersion=0.2-SNAPSHOTの2つの文字列パラメーターを定義します。

Build構成セクションで、次のMavenコマンドを実行するように構成するだけです。

Release:Clean release:prepare release:perform
   -DreleaseVersion=${releaseVersion} -DdevelopmentVersion=${developmentVersion}

パラメータ化されたジョブを実行すると、Jenkinsはユーザーにこれらのパラメータの値を指定するように求めます。したがって、ジョブを実行するたびに、releaseVersiondevelopmentVersionに正しい値を入力する必要があります。

また、Workspace Cleanup Pluginを使用して、このビルドのDelete workspace before build startsオプションを確認することをお勧めします。 ただし、リリースのperformステップは必ずpreparestepと同じコマンドで実行する必要があることに注意してください。これは、後者のperformステップがrelease.propertiesを使用するためです。 prepareによって作成されたファイル。 これは、prepareを実行しているJenkinsジョブとperformを実行している別のジョブを持つことができないことを意味します。

7. 結論

この記事では、Jenkinsの有無にかかわらずReleasing a Maven projectのプロセスを実装する方法を示しました。 同様のto Deployment、このプロセスはnexus-staging-maven-pluginを使用してNexusと対話し、gitプロジェクトに焦点を当てています。