Git flow:如何在Jenkins中配置一键式发布流程?
我们正在使用标准的git flow分支模型(develop,master ,release- , hotfix-等)。
作为我们工作流程的一部分,我们希望通过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 flow分支模型构建版本(即从develop
构建并创建名为release-xyz
的新版本分支)。
虽然这个答案是一年前我想指出,同时jgitflow( v1.0-m5.1
)与maven批处理模式一起工作。
因此,只需使用一个命令即可执行以下任务:
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上运行,您必须执行包含相同命令的Batch脚本(有时由于Windows的SSH问题,这不起作用)或相应地配置Git Publisher
Post-build action
。
您可以简单地使用jenkins插件M2 Release Plugin和发布目标选项-B -DautoVersionSubmodules=true jgitflow:release-start jgitflow:release-finish
我们最终在客户端上通过CLI启动发布(因为在Jenkins中有一个错误开始发布)。
git flow release start -DautoVersionSubmodules=true
如果要使用批处理模式,则需要指定developmentVersion和releaseVersion 。
在Jenkins创建了一个新工作来构建发布分支并使用M2 Release Plugin最终发布它:
-B jgitflow:release-finish
如果您使用某些自定义配置文件,则必须通过由bug引起的参数传递它们。
-Darguments=-Pprofile
我们从未找到过通过Jenkins中的插件或maven目标来实现此function的方法。
我们的解决方案最终得到了一个bash
脚本,它执行了git flow release start
,maven release process, git flow release finish
和其他东西(git pull on develop
和master
at a start,git push
和slack notification at very结束)。