私は現在、Jenkins (1.430) でプロジェクトのリリース プロセスを強化しています。
現在のリリース ジョブ
現在、ある特定のプロジェクトについて、リリース プロセス専用のジョブが 1 つあります。完全な手順は次のとおりです。
- リリースを担当する開発者は、すべての pom.xml ファイルのバージョンを (実際には を使用して
mvn versions:set -DnewVersion=2.0
) 手動で変更し、-SNAPSHOT
. - 次に、SVN でタグを作成します (例: http://my-svn-repo/project/tags/V_2_0 )。
- このタグが作成されると、Jenkins サーバーにログオンし、リリース ビルドを開始します。
- このビルドでは、ビルドに使用するタグを尋ねます。ジョブは、パラメーターList Subversion tagsを使用して、パラメーター化されたビルドとして構成されます。
- Jenkins はこのタグからアーティファクトを構築し、Nexus インスタンスにデプロイします。
- これが完了すると、開発者は pom.xml バージョンを新しい開発バージョン (つまり
2.1-SNAPSHOT
) に設定します。
この方法の利点は、ビルドがタグのみに依存するため、Jenkins ジョブしかないことです。
ただし、この手順には人間の介入が多すぎます (pom.xml、コミット、タグなどの変更)。
新しいリリース ジョブ
現在、Maven リリース プラグインを使用しています。ビルドを起動するユーザーに 3 つの情報を尋ねるジョブを作成しました。
- リリースのバージョン (
releaseVersion
リリース プラグインのパラメータ); - リリース後の開発バージョン (
developmentVersion
リリース プラグインのパラメーター)。 - タグの名前 (
tag
リリース プラグインのパラメーター)。
このジョブは、1 つの点を除いて正常に機能します。ジョブは、トランクまたは SVN のブランチに基づいています。これは、(トランクに加えて) 2 つのブランチがある場合、3 つのリリース ジョブ (ブランチごとに 1 つ) を作成する必要があることを意味します。
2 つの世界 (つまり、mvn リリースを使用するが、1 つのリリース ジョブを維持する) の長所を維持するための 1 つのアイデアは、トランク/ブランチのパスをユーザーに尋ねるビルド パラメーターを追加することです。そのため、ジョブ構成でhttp://my-svn-repo/project/trunk
(または)を設定する代わりに、 を設定し、ユーザーにパラメーターの入力を求めます。http://my-svn-repo/project/branches/BRANCH_V1
http://my-svn-repo/project/$FROM_BRANCH
FROM_BRANCH
このソリューションの問題は、ユーザーが または のいずれtrunk
かを入力する必要branches/BRANCH_Vx
があり、エラーが発生する可能性があることです。
理想的には、パラメータList Subversion tagsがタグの選択のために存在するため、ブランチ (トランクを含む) の選択を可能にするビルド パラメータが欲しいです...
私の質問:すべてのブランチで機能する1 つのJenkins ジョブを構成するより良い方法はありますか?
ありがとう。
編集: Validating String Jenkins プラグインが見つかりました。これは、ユーザーが定義した値が正規表現を尊重することを保証するのに興味深いものです。それは私の場合に役立ちます...