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

时间:2015-04-09 07:14:40

标签: java git jenkins git-flow jgitflow-maven-plugin

我们正在使用标准的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>

4 个答案:

答案 0 :(得分:12)

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

因此,只需一个命令即可发布工件:

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远程服务器。

要实现这一点,最简单的方法是添加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 developmaster在一开始,git push和最后的松弛通知。)