Java Git流:如何在Jenkins中配置一键发布流程?
我们使用的是标准的git流分支模型(开发、主控、发布、修补程序等等) 作为我们工作流程的一部分,我们希望通过jenkins建立“一键式”发布 我在看电视。我可以把这个插件设置成从jenkins一键发布吗?如果是,配置选项是什么 特别是,我可以这样做吗Java Git流:如何在Jenkins中配置一键发布流程?,java,git,jenkins,git-flow,jgitflow-maven-plugin,Java,Git,Jenkins,Git Flow,Jgitflow Maven Plugin,我们使用的是标准的git流分支模型(开发、主控、发布、修补程序等等) 作为我们工作流程的一部分,我们希望通过jenkins建立“一键式”发布 我在看电视。我可以把这个插件设置成从jenkins一键发布吗?如果是,配置选项是什么 特别是,我可以这样做吗 Jenkins Job Maven goals: release-start release-finish -Dsomething -Delse 有没有办法告诉它从最新的快照版本自动生成,例如,如果版本是1.2.3-SNAPSHOT,它将生
Jenkins Job
Maven goals: release-start release-finish -Dsomething -Delse
有没有办法告诉它从最新的快照版本自动生成,例如,如果版本是1.2.3-SNAPSHOT
,它将生成release-1.2.3
否则,是否有一个maven插件可以根据git流分支模型构建发布(即从
构建开发并创建一个名为release-x.y.z
)的新发布分支。您只需将jenkins插件与发布目标和选项一起使用即可
-B-DautoVersionSubmodules=true jgitflow:release start jgitflow:release finish
在Jenkins中,我们从未找到通过插件或maven目标实现此功能的方法
我们的解决方案以一个bash
脚本结束,该脚本执行了git flow release start
、maven release过程、git flow release finish
和其他一些操作(git pull ondevelope
和master
在一开始时,gitpush
在最后执行松弛通知)
如果要使用批处理模式,需要指定developmentVersion和releaseVersion
在Jenkins中创建了一个新作业,以构建发布分支并使用最终发布:
-B jgitflow:release-finish
如果使用某些自定义配置文件,则必须通过由错误引起的参数传递附加配置文件
虽然这个答案已经有一年历史了,但我想指出的是,与此同时,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的内容
在源代码管理>Git>其他行为下
选择
清除存储库并强制git克隆
:只是为了确保工作区干净
签出到特定的本地分支机构
:您的开发
分支机构
最后,发布在Jenkins服务器上本地进行,因此您希望将更改推回到Git远程服务器上
要实现这一点,最简单的方法是添加一个Post build action
,它执行以下bash命令(分支名称可能会有所不同,我使用了JGitFlow默认值):
注意如果Jenkins在Windows上运行,您要么必须执行包含相同命令的批处理脚本(有时由于Windows的SSH问题,此脚本无法工作),要么相应地配置Git Publisher
编译后操作。
您同时管理了吗?如果是,怎么做?不,我们还没有让它工作。仍然在做mvn发布:prepare and release:perform(我们都知道,这是b**t的一大难题)。这里有一个小小的更新,我们正在使用一个名为release.sh
的unix脚本,它执行以下操作:git flow release start…
,mvn-b发布:prepare
,mvn release:perform
,git流发布完成…
。这并不理想,在windows机器上也不起作用,但这是我们目前拥有的最好的解决方案。嗨,我目前正在研究类似的东西,我尝试了“gitflow maven plugin”,基本上你可以用一个命令更新版本(尽管还没有完全自动化),我还在考虑如何将它与Jenkins结合起来,只是想知道你是否能成功?好的。您确定jgitflow可以在批处理模式下工作吗?上次我试过,它需要一个version
某种参数。@vikingsteve使用developmentVersion和releaseVersion属性,请看我的答案。看起来很有希望,我会测试一下。谢谢。基本上,它可以归结为以下四个打包为Jenkins作业的命令:git clone.&git checkout develop&&mvn—批处理模式jgitflow:release start jgitflow:release finish&&git push origin develop master—标记
@gucce您的步骤非常有效。考虑到jgitflow已经有一段时间没有进行过积极的开发,您是否成功地使用了其他git flow maven插件?@testphreak否,我不知道还有其他maven插件。虽然它还没有被积极开发(也许永远不会再被开发,见[1]),但我们没有遇到任何问题阻止我们在当前项目中使用它。对于下一个项目,我不知道我们是否会再次使用它。[1] 只是想指出您不需要添加push命令,这里有一个参数:-dpushleases=true。我们使用它,它使詹金斯的工作非常简单。
-Darguments=-Pprofile
mvn --batch-mode jgitflow:release-start jgitflow:release-finish
git push origin develop master --tags