12

我们使用的是标准的 git 流分支模型(develop、master、release-、hotfix-等)。

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

我在看jgitflow-maven-plugin。我可以设置这个插件从詹金斯做一键发布吗?如果是这样,配置选项是什么?

特别是,我可以做这样的事情吗?

Jenkins Job
Maven goals:    release-start release-finish -Dsomething -Delse

有没有办法告诉它从最新的 -SNAPSHOT 版本自动构建,例如,如果版本是1.2.3-SNAPSHOT它会构建的release-1.2.3

否则,是否有一个根据 git flow 分支模型构建发布的 maven 插件(即构建develop并创建一个名为 的新发布分支release-x.y.z)。

4

4 回答 4

13

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

因此,要仅使用一个命令发布工件,您可以执行:

mvn --batch-mode jgitflow:release-start jgitflow:release-finish

不需要设置developmentVersionreleaseVersion

JGitFlow 将使用当前版本减去-SNAPSHOT部分作为发布版本。然后它增加最低有效数字并-SNAPSHOT为下一个开发版本再次添加。
示例 1.0.0-SNAPSHOT--> Release: 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 上运行,您要么必须执行包含相同命令的批处理脚本(有时由于 Windows 的 SSH 问题,这不起作用)或Git Publisher Post-build action相应地配置。

于 2016-08-19T10:12:14.657 回答
1

您可以简单地使用带有发布目标和选项 的 jenkins 插件M2 Release Plugin-B -DautoVersionSubmodules=true jgitflow:release-start jgitflow:release-finish

于 2015-07-01T17:31:50.813 回答
1

我们最终通过客户端上的 CLI 启动了发布(因为在 Jenkins 中启动发布时存在错误)。

git flow release start -DautoVersionSubmodules=true

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

在 Jenkins 中创建了一个新作业来构建发布分支并使用M2 发布插件最终发布它:

-B jgitflow:release-finish

如果您使用一些自定义配置文件,则必须通过由错误引起的参数额外传递它们。

-Darguments=-Pprofile
于 2016-06-24T06:52:17.860 回答
0

我们从未找到通过 Jenkins 中的插件或 maven 目标使其工作的方法。

我们的解决方案最终得到了一个bash脚本git flow release start <version>,maven 发布过程git flow release finish <version>和其他东西(git pull在最开始,gitdevelop和slack 通知在最后)。masterpush

于 2016-06-02T07:25:03.390 回答