web-dev-qa-db-ja.com

Gitフロー:Jenkinsでワンクリックリリースプロセスを構成するにはどうすればよいですか?

標準の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という名前の新しいリリースブランチを作成します)。

12
vikingsteve

JenkinsのプラグインまたはMavenゴールを介してこれを機能させる方法は見つかりませんでした。

私たちのソリューションは、bashスクリプトでgit flow release start <version>、Mavenリリースプロセス、git flow release finish <version>およびその他のもの(最初はgit pull developおよびmaster、最後はgit Pushおよびslack通知)。

0
vikingsteve

この回答は1年前のものですが、その間、jgitflow(_v1.0-m5.1_)はMavenバッチモードで動作することを指摘しておきます。

したがって、1つのコマンドだけでアーティファクトをリリースするには、次のコマンドを実行できます。

_mvn --batch-mode jgitflow:release-start jgitflow:release-finish
_

あなたしないでくださいdevelopmentVersionreleaseVersionを設定する必要があります。

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_それに応じて。

12
gucce

クライアントでCLIを介してリリースを開始することになりました(Jenkinsには bug リリースの開始があるため)。

git flow release start -DautoVersionSubmodules=true

バッチモードを使用する場合は、developmentVersionおよびreleaseVersionを指定する必要があります)。

Jenkinsで新しいジョブを作成してリリースブランチを構築し、 M2リリースプラグイン を使用して最終的にリリースします。

-B jgitflow:release-finish

一部のカスタムプロファイルを使用する場合は、 bug によって引き起こされるargumentsを介してそれらを追加で渡す必要があります。

-Darguments=-Pprofile
1
CSchulz

Jenkinsプラグインを使用するだけです M2リリースプラグイン リリース目標オプション-B -DautoVersionSubmodules=true jgitflow:release-start jgitflow:release-finish

1
dimapin