我们正在使用标准的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-x.y.z
的新版本分支。 / p>
答案 0 :(得分:12)
虽然这个答案是一年之久我想指出,同时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远程服务器。
要实现这一点,最简单的方法是添加Post-build action
执行以下bash命令(分支名称可能不同,我使用了JGitFlow默认值):
git push origin develop master --tags
注意如果Jenkins在Windows上运行,您必须执行包含相同命令的Batch脚本(有时由于Windows的SSH问题而无效)或配置{{1} } Git Publisher
相应的。
答案 1 :(得分:1)
您可以简单地将jenkins插件M2 Release Plugin与发布目标一起使用
-B -DautoVersionSubmodules=true jgitflow:release-start jgitflow:release-finish
答案 2 :(得分:1)
我们最终通过客户端上的CLI启动发布(因为在Jenkins中有一个bug开始发布)。
git flow release start -DautoVersionSubmodules=true
如果您想使用批处理模式,您需要指定 developmentVersion 和 releaseVersion 。
在Jenkins中创建了一个新工作来构建发布分支并使用M2 Release Plugin最终发布它:
-B jgitflow:release-finish
如果您使用某些自定义配置文件,则必须通过bug引起的参数进一步传递它们。
-Darguments=-Pprofile
答案 3 :(得分:0)
我们从未找到过通过Jenkins中的插件或maven目标来实现此目的的方法。
我们的解决方案最终得到的bash
脚本执行了git flow release start <version>
,maven发布流程,git flow release finish <version>
和其他内容(git pull on develop
和master
在一开始,git push
和最后的松弛通知。)