1概要

この連載の前回の記事で、リンクを設定しました:/maven-deploy-nexus[

MavenからNexusへのデプロイメント・プロセス

]。この記事では、プロジェクトの

pom

とJenkinsの仕事の両方で、Maven

を使用した

Release Processを設定します。


2

pom


のリポジトリ

MavenがNexus Repository Serverにリリースできるようにするには、

distributionManagement

要素を介して

リポジトリ

情報を定義する必要があります。

<distributionManagement>
   <repository>
      <id>nexus-releases</id>
      <url>http://localhost:8081/nexus/content/repositories/releases</url>
   </repository>
</distributionManagement>

ホストされているReleases RepositoryはNexus上でそのまま使えるので、明示的に作成する必要はありません。


3 MavenでのSCM

pom


リリースプロセスはプロジェクトのソース管理とやり取りします。つまり、まず

pom.xml



<scm>

要素を定義する必要があります。

<scm>
   <connection>scm:git:https://github.com/user/project.git</connection>
   <url>http://github.com/user/project</url>
   <developerConnection>scm:git:https://github.com/user/project.git</developerConnection>
</scm>

あるいは、gitプロトコルを使用します。

<scm>
   <connection>scm:git:[email protected]:user/project.git</connection>
   <url>scm:git:[email protected]:user/project.git</url>
   <developerConnection>scm:git:[email protected]:user/project.git</developerConnection>
</scm>


4リリースプラグイン

リリースプロセスで使用される標準のMavenプラグインは

maven-release-plugin

です – このプラグインの設定は最小限です。

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-release-plugin</artifactId>
   <version>2.4.2</version>
   <configuration>
      <tagNameFormat>[email protected]{project.version}</tagNameFormat>
      <autoVersionSubmodules>true</autoVersionSubmodules>
      <releaseProfiles>releases</releaseProfiles>
   </configuration>
</plugin>

ここで重要なことは、

releaseProfiles

設定が実際にはMavenプロファイル –

releases

プロファイル – がリリースプロセス中にアクティブになることです。

このプロセスでは、

nexus-staging-maven-plugin

を使用して

nexus-release

Nexusリポジトリへのデプロイを実行します。

<profiles>
   <profile>
      <id>releases</id>
      <build>
         <plugins>
            <plugin>
               <groupId>org.sonatype.plugins</groupId>
               <artifactId>nexus-staging-maven-plugin</artifactId>
               <version>1.5.1</version>
               <executions>
                  <execution>
                     <id>default-deploy</id>
                     <phase>deploy</phase>
                     <goals>
                        <goal>deploy</goal>
                     </goals>
                  </execution>
               </executions>
               <configuration>
                  <serverId>nexus-releases</serverId>
                  <nexusUrl>http://localhost:8081/nexus/</nexusUrl>
                  <skipStaging>true</skipStaging>
               </configuration>
            </plugin>
         </plugins>
      </build>
   </profile>
</profiles>

プラグインは、デプロイプロセス(

skipStaging = true

)に対して

以前

と同じように、ステージングメカニズム

なしでリリースプロセス

を実行するように設定されています。

また、展開プロセスと同様に、** Nexusへの解放はセキュリティ保護された操作です – したがって、私たちはNexusからOut-of-the-box

展開

ユーザフォームを再び使用します。

また、グローバル

settings.xml



%USER

HOME%/。m2/settings.xml

)で

nexus-release__サーバーの資格情報を構成する必要があります。

<servers>
   <server>
      <id>nexus-releases</id>
      <username>deployment</username>
      <password>the__pass__for__the__deployment__user</password>
   </server>
</servers>

これは完全な設定です


5リリースプロセス

リリースプロセスを小さく集中したステップに分割しましょう。プロジェクトの現在のバージョンがSNAPSHOTバージョンである場合、リリースを実行しています –

0.1-SNAPSHOT

と言います。


5.1. リリース:クリーン

  • リリースのクリーニング**

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

    release.properties

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

* 5.2。リリース:準備**

リリースプロセスの次の部分は、

リリースの準備

です。この意志:

  • いくつかのチェックを実行する – コミットされていない変更や

プロジェクトはSNAPSHOT依存関係に依存しない
** pomファイル内のプロジェクトのバージョンをフルリリースに変更する

番号(SNAPSHOTサフィックスを削除) – この例では

0.1


プロジェクトを実行する

テスト** スイート

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

このSNAPSHOTバージョン管理されていないコードから

タグ

を作成します。


  • pomのプロジェクトのバージョンを

    増やします – この例では –


0.2 – 概要

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

* 5.3。リリース:実行**

リリースプロセスの後半は

リリースの実行

です。この意志:

  • SCMからのチェックアウト解除タグ

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

このプロセスの2番目のステップは、準備ステップの出力

release.properties

に依存します。


6. Jenkins

について

Jenkinsは2つの方法のうちの1つでリリースプロセスを実行することができます – それはそれ自身のリリースプラグインを使用するか、または正しいリリースステップを実行する標準のMavenジョブでリリース実行を実行できます。

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

プラグイン]**

M2

リリースプラグイン]

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

それで、新しいJenkinsの仕事(maven2/3プロジェクトを構築する)のために –

releaseVersion = 0.1



developmentVersion = 0.2-SNAPSHOT

の2つの文字列パラメータを定義します。



Build


configurationセクションで、次のMavenコマンドを実行するように簡単に設定できます。

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

パラメータ化されたジョブを実行するとき、Jenkinsはユーザにこれらのパラメータの値を指定するように促します – そのため、ジョブを実行するたびに

releaseVersion



developmentVersion

に正しい値を入力する必要があります。

また、https://wiki.jenkins-ci.org/display/JENKINS/Workspace Cleanup Plugin[Workspace Cleanup Plugin]を使用して、このビルドの[ビルド開始前にワークスペースを削除]オプションをチェックすることをお勧めします。ただし、リリースの


perform


ステップは必ず

__

prepare



ステップと同じコマンドで実行する必要があることに注意してください。これは、後者の


perform



ステップが

release.properties

ファイルを

で作成するためです。

準備


。つまり、Jenkins Jobで


prepare


を実行し、別の


perform


を実行することはできません。


7. 結論

この記事では、Jenkinsの有無にかかわらず

Mavenプロジェクトのリリース

のプロセスを実装する方法を説明しました。同様のリンク:/maven-deploy-nexus[Deploymentへ]、このプロセスはNexusと対話するために

nexus-staging-maven-plugin

を使っていて、gitプロジェクトに焦点を当てています。