標準のgitフロー分岐モデル(開発、マスター、リリース-、ホットフィックス-など)を使用しています。
ワークフローの一環として、jenkinsを介して「ワンクリック」リリースを設定したいと思います。
jgitflow-maven-plugin を見ていました。 jenkinsからワンクリックリリースを実行するようにこのプラグインを設定できますか?もしそうなら、構成オプションは何ですか?
特に、このようなことはできますか?
Jenkins Job
Maven goals: release-start release-finish -Dsomething -Delse
そして、最新の-SNAPSHOTバージョンから自動的にビルドするように指示する方法はありますか?バージョンが1.2.3-SNAPSHOT
の場合、release-1.2.3
をビルドします。
それ以外の場合、リリースをビルドするMavenプラグインはありますかgitフロー分岐モデルに従って(つまり、develop
からビルドし、release-x.y.z
という名前の新しいリリースブランチを作成します)。
JenkinsのプラグインまたはMavenゴールを介してこれを機能させる方法は見つかりませんでした。
私たちのソリューションは、bash
スクリプトでgit flow release start <version>
、Mavenリリースプロセス、git flow release finish <version>
およびその他のもの(最初はgit pull develop
およびmaster
、最後はgit Push
およびslack通知)。
この回答は1年前のものですが、その間、jgitflow(_v1.0-m5.1
_)はMavenバッチモードで動作することを指摘しておきます。
したがって、1つのコマンドだけでアーティファクトをリリースするには、次のコマンドを実行できます。
_mvn --batch-mode jgitflow:release-start jgitflow:release-finish
_
あなたしないでくださいdevelopmentVersion
とreleaseVersion
を設定する必要があります。
JGitFlowは、現在のバージョンから_-SNAPSHOT
_部分を除いたものをリリースバージョンとして使用します。次に、最下位桁をインクリメントし、次の開発バージョン用に_-SNAPSHOT
_を再度追加します。
例 _1.0.0-SNAPSHOT
_->リリース:_1.0.0
_、次の開発バージョン:_1.0.1-SNAPSHOT
_
シングルクリックのJenkinsリリースジョブを構成するには、Gitに関するいくつかの構成が必要です。
_Source Code Management > Git > Additional Behaviors
_の下で
Wipe out repository & force git clone
_:ワークスペースがクリーンであることを確認するためだけにCheckout to specific local branch
_:develop
ブランチ。最後に、リリースはJenkinsサーバーでローカルに行われるため、Gitリモートサーバーに変更をプッシュバックする必要があります。
これを実現する最も簡単な方法は、次のbashコマンドを実行する_Post-build action
_を追加することです(ブランチ名は異なる場合があります。JGitFlowのデフォルト値を使用しました)。
_git Push Origin develop master --tags
_
注 JenkinsがWindowsで実行されている場合は、同じコマンドを含むバッチスクリプトを実行するか(WindowsのSSHの問題が原因でこれが機能しない場合があります)、_Git Publisher
_ _Post-build action
_それに応じて。
クライアントでCLIを介してリリースを開始することになりました(Jenkinsには bug リリースの開始があるため)。
git flow release start -DautoVersionSubmodules=true
バッチモードを使用する場合は、developmentVersionおよびreleaseVersionを指定する必要があります)。
Jenkinsで新しいジョブを作成してリリースブランチを構築し、 M2リリースプラグイン を使用して最終的にリリースします。
-B jgitflow:release-finish
一部のカスタムプロファイルを使用する場合は、 bug によって引き起こされるargumentsを介してそれらを追加で渡す必要があります。
-Darguments=-Pprofile
Jenkinsプラグインを使用するだけです M2リリースプラグイン リリース目標オプション-B -DautoVersionSubmodules=true jgitflow:release-start jgitflow:release-finish