Gitflow:如何在Jenkins中配置一键发布流程?
Git flow: How to configure a one-click release process in Jenkins?
我们正在使用标准 git 流程分支模型(开发、掌握、发布-、修补程序- 等)。
作为我们工作流程的一部分,我们想通过 jenkins 设置 "one-click" 发布。
我在看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 流程分支模型 构建版本 (即从 develop
构建并创建一个新的版本分支名为 release-x.y.z
).
您可以简单地使用带有发布目标和选项的 jenkins 插件 M2 Release Plugin
-B -DautoVersionSubmodules=true jgitflow:release-start jgitflow:release-finish
我们从未找到通过 Jenkins 中的插件或 maven 目标使其工作的方法。
我们的解决方案以 bash
脚本完成 git flow release start <version>
、maven 发布过程、git flow release finish <version>
和其他事情(git 拉动 develop
和 master
在最开始,git push
和松弛通知在最后)。
我们最终通过客户端上的 CLI 开始发布(因为在 Jenkins 中有一个 bug 开始发布)。
git flow release start -DautoVersionSubmodules=true
如果要使用批处理模式需要指定developmentVersion和releaseVersion.
在 Jenkins 中创建了一个新工作来构建发布分支并使用 M2 Release Plugin 最终发布它:
-B jgitflow:release-finish
如果您使用某些自定义配置文件,则必须通过 arguments 额外传递它们,原因是 bug.
-Darguments=-Pprofile
虽然这个答案是一年前的,但我想指出同时 jgitflow (v1.0-m5.1
) 与 maven 批处理模式一起工作。
因此,要仅使用 一条命令 发布工件,您可以执行:
mvn --batch-mode jgitflow:release-start jgitflow:release-finish
您不需要设置developmentVersion
和releaseVersion
。
JGitFlow 将使用当前版本减去 -SNAPSHOT
部分作为发布版本。然后它递增最低有效数字并为下一个开发版本再次添加 -SNAPSHOT
。
Example 1.0.0-SNAPSHOT
--> Release: 1.0.0
, next Development version: 1.0.1-SNAPSHOT
为了配置 单击 Jenkins 发布作业,您需要配置一些关于 Git.
的东西
下 Source Code Management > Git > Additional Behaviors
select
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
。
我们正在使用标准 git 流程分支模型(开发、掌握、发布-、修补程序- 等)。
作为我们工作流程的一部分,我们想通过 jenkins 设置 "one-click" 发布。
我在看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 流程分支模型 构建版本 (即从 develop
构建并创建一个新的版本分支名为 release-x.y.z
).
您可以简单地使用带有发布目标和选项的 jenkins 插件 M2 Release Plugin
-B -DautoVersionSubmodules=true jgitflow:release-start jgitflow:release-finish
我们从未找到通过 Jenkins 中的插件或 maven 目标使其工作的方法。
我们的解决方案以 bash
脚本完成 git flow release start <version>
、maven 发布过程、git flow release finish <version>
和其他事情(git 拉动 develop
和 master
在最开始,git push
和松弛通知在最后)。
我们最终通过客户端上的 CLI 开始发布(因为在 Jenkins 中有一个 bug 开始发布)。
git flow release start -DautoVersionSubmodules=true
如果要使用批处理模式需要指定developmentVersion和releaseVersion.
在 Jenkins 中创建了一个新工作来构建发布分支并使用 M2 Release Plugin 最终发布它:
-B jgitflow:release-finish
如果您使用某些自定义配置文件,则必须通过 arguments 额外传递它们,原因是 bug.
-Darguments=-Pprofile
虽然这个答案是一年前的,但我想指出同时 jgitflow (v1.0-m5.1
) 与 maven 批处理模式一起工作。
因此,要仅使用 一条命令 发布工件,您可以执行:
mvn --batch-mode jgitflow:release-start jgitflow:release-finish
您不需要设置developmentVersion
和releaseVersion
。
JGitFlow 将使用当前版本减去 -SNAPSHOT
部分作为发布版本。然后它递增最低有效数字并为下一个开发版本再次添加 -SNAPSHOT
。
Example 1.0.0-SNAPSHOT
--> Release: 1.0.0
, next Development version: 1.0.1-SNAPSHOT
为了配置 单击 Jenkins 发布作业,您需要配置一些关于 Git.
的东西下 Source Code Management > Git > Additional Behaviors
select
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
。