我们正在使用标准的git flow分支模型(开发,掌握,发布 - ,修补程序 - 等)。
作为我们工作流程的一部分,我们希望通过jenkins设置“一键式”发布。
我在看着 jgitflow - Maven的插件。我可以设置这个插件来进行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
)。
虽然这个答案已经有一年了但我想指出同时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问题,这不起作用)或配置 Git Publisher
Post-build action
因此。
你可以简单地使用jenkins插件 M2发布插件 随着发布目标的选择
-B -DautoVersionSubmodules=true jgitflow:release-start jgitflow:release-finish
我们最终在客户端通过CLI启动发布(因为在Jenkins中有一个 窃听器 开始发布)。
git flow release start -DautoVersionSubmodules=true
如果要使用批处理模式,则需要指定 developmentVersion 和 releaseVersion。
在Jenkins中创建了一个新工作来构建发布分支并使用 M2发布插件 最后发布它:
-B jgitflow:release-finish
如果您使用某些自定义配置文件,则必须通过其他方式传递它们 参数 由...引起的 窃听器。
-Darguments=-Pprofile
我们从未找到过通过Jenkins中的插件或maven目标来实现此功能的方法。
我们的解决方案结束了 bash
做的脚本 git flow release start <version>
,maven发布过程, git flow release finish <version>
和其他东西(git pull on develop
和 master
一开始,git push
最后的松弛通知)。