NexusへのMavenのリリース
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プラグインは次のとおりです。
-
https://wiki.jenkins-ci.org/display/JENKINS/Release
Plugin[リリース]
プラグイン]**
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プロジェクトに焦点を当てています。