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.1とdevelopmentVersion=0.2-SNAPSHOTの2つの文字列パラメーターを定義します。
Build構成セクションで、次のMavenコマンドを実行するように構成するだけです。
Release:Clean release:prepare release:perform
-DreleaseVersion=${releaseVersion} -DdevelopmentVersion=${developmentVersion}
パラメータ化されたジョブを実行すると、Jenkinsはユーザーにこれらのパラメータの値を指定するように求めます。したがって、ジョブを実行するたびに、releaseVersionとdevelopmentVersionに正しい値を入力する必要があります。
また、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プロジェクトに焦点を当てています。