Java Git流:如何在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,它将生

我们使用的是标准的git流分支模型(开发、主控、发布、修补程序等等)

作为我们工作流程的一部分,我们希望通过jenkins建立“一键式”发布

我在看电视。我可以把这个插件设置成从jenkins一键发布吗?如果是,配置选项是什么

特别是,我可以这样做吗

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 on
develope
master
在一开始时,git
push
在最后执行松弛通知)

如果要使用批处理模式,需要指定developmentVersionreleaseVersion

在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