Git 如何仅对我要合并的分支使用Jenkins预构建分支合并?

Git 如何仅对我要合并的分支使用Jenkins预构建分支合并?,git,jenkins,Git,Jenkins,我正在阅读一篇文章,它允许在将提交推送到主分支之前预构建功能分支,从而有效地实现预提交构建/测试队列 它在使用Git、Jenkins和预构建分支合并的下说: 设置Jenkins项目,并在Git中保留“branch”字段 SCM空白。这将导致詹金斯考虑任何改变。 建筑部 接下来,选择一个特定的分支名称作为 “高级”部分-(例如“主”或“稳定”),然后选择“合并” 在建造之前” 从后期构建中选择“将GIT标记推回到源存储库” 行动(这是使用 构建的结果) 现在,开发人员永远不应该直接致力于您的集成

我正在阅读一篇文章,它允许在将提交推送到主分支之前预构建功能分支,从而有效地实现预提交构建/测试队列

它在使用Git、Jenkins和预构建分支合并的
下说:

设置Jenkins项目,并在Git中保留“branch”字段 SCM空白。这将导致詹金斯考虑任何改变。 建筑部

接下来,选择一个特定的分支名称作为 “高级”部分-(例如“主”或“稳定”),然后选择“合并” 在建造之前”

从后期构建中选择“将GIT标记推回到源存储库” 行动(这是使用 构建的结果)

现在,开发人员永远不应该直接致力于您的集成 分支(“主”或“稳定”)。相反,他们应该使用 功能分支,或在提交时创建新的远程分支(例如:“git 推送原点标头:参照/标头/myNewFeature”)。您还可以设置 GIT存储库只接受来自的对集成分支的提交 詹金斯

你完了。提交现在应该自动与 集成分支(如果不干净地合并,它们将失败),以及 建造。如果构建成功,合并的结果将被推送 返回到远程git存储库

现在我经常有一些特性分支,我想继续开发,以后只将它们合并到
master

据我所知,此设置将在构建后立即合并并将任何功能分支推送到
master


(如何)Jenkins能够支持我的用例,构建所有功能分支,但只将那些合并到我认为要合并的
master
中?

我有一个构建管道,我只希望开发分支合并回我的稳定分支。不应合并所有其他文件。我解决这个问题的方法是为合并单独安排一个工作。构建作业完成后,仅当环境变量GIT_BRANCH等于“develope”时,才会触发“合并”作业

詹金斯没有一个很好的条件触发器,它的工作方式和我想要的一样。下面是我如何设置构建作业以有条件地触发合并步骤

  • 添加构建步骤以删除名为trigger.properties的文件(我使用执行Shell构建步骤)
  • 如果$GIT_BRANCH等于“origin/develope”,则添加要运行的构建步骤(条件构建步骤插件)条件步骤(单个)。如果为true,则运行shell命令来创建trigger.properties文件。(触摸触发。属性)
  • 添加生成后操作(参数化触发器插件),以在生成稳定时触发合并作业。在“属性文件中的参数”部分,用“trigger.properties”填充字段。有一个选项“如果任何文件丢失,不要触发”,所以请检查该选项
因此,过程是首先删除trigger.properties文件,以确保前一次运行没有冲突。然后,检查git分支是否正在开发中。如果是,请重新创建trigger.properties文件。生成后步骤要求该文件存在,以便触发下一个作业


现在,您可以在专门为此而做的工作中执行您喜欢的合并类型。您还可以修改此过程,使多个分支进入合并作业。

您看过Jenkins的预测试提交插件吗?


它正是为您描述的目的而设计的。

我确实和您有同样的担忧,那么您是如何解决的呢?Thanks@user378132我还没有解决。据我所知,你没有在git publisher上选择“merge to remote”,功能分支不会在remote repo上与你的主机合并,这是你想要的吗?@user378132我不太明白你在说什么,你能重新表述吗?听起来很微妙(特别是必须在文件系统上工作),但看起来仍然是一个有用的解决方法。