Git flow:如何在Jenkins中配置一键式发布流程?

vik*_*eve 12 java git git-flow jenkins jgitflow-maven-plugin

我们正在使用标准的git flow分支模型(develop,master ,release-,hotfix-等).

作为我们工作流程的一部分,我们希望通过jenkins设置"一键式"发布.

我在看jgitflow-maven-plugin.我可以设置这个插件来进行jenkins的一键式发布吗?如果是这样,配置选项有哪些?

特别是,我可以这样做吗?

Jenkins Job
Maven goals:    release-start release-finish -Dsomething -Delse
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉它从最新的-SNAPSHOT版本自动构建,例如,如果版本是1.2.3-SNAPSHOT它将构建release-1.2.3.

否则,是否有maven插件根据git flow分支模型构建版本(即从中develop创建并创建一个名为的新版本分支release-x.y.z).

guc*_*cce 12

虽然这个答案是一年前我想指出,同时jgitflow(v1.0-m5.1)与maven批处理模式一起工作.

因此,只需使用一个命令即可执行以下任务:

mvn --batch-mode jgitflow:release-start jgitflow:release-finish
Run Code Online (Sandbox Code Playgroud)

并不需要设置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远程服务器.

要实现这一点,最简单的方法是添加一个Post-build action执行以下bash命令的命令(分支名称可能会有所不同,我使用了JGitFlow默认值):

git push origin develop master --tags
Run Code Online (Sandbox Code Playgroud)

注意如果Jenkins在Windows上运行,您必须执行包含相同命令的Batch脚本(有时由于Windows的SSH问题,这不起作用)或相应地配置Git Publisher Post-build action.


vik*_*eve 0

我们从未找到一种方法可以通过 Jenkins 中的插件或 Maven 目标来实现此目的。

我们的解决方案最终得到了一个bash脚本,该脚本执行了git flow release start <version>、maven 发布过程git flow release finish <version>和其他操作(git pulldevelopmaster最开始时,gitpush和 slack 通知在最后)。