我正在阅读https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin#GitPlugin-AdvancedFeatures,它允许在将提交提交到主分支之前预构建功能分支,从而有效地实现预提交构建/测试队列。
在Using Git, Jenkins and pre-build branch merging
下说:
设置Jenkins项目,然后离开'分支' Git中的字段 SCM空白。这将导致Jenkins考虑任何变化 建筑分支。
接下来,选择一个特定的分支名称作为集成目标 '高级'部分 - (例如' master'或' stable'),并选择'合并 在构建之前'。
选择'将GIT标签推回原始存储库'从后期制作 操作(这是使用。更新集中式git仓库所必需的 构建的结果)。
现在,开发人员不应该直接提交您的集成 分支(' master'或' stable')。相反,他们应该使用 功能分支,或在提交时创建新的远程分支(例如:" git push origin HEAD:refs / heads / myNewFeature")。你也可以设置你的 GIT存储库只接受来自集成分支的提交 詹金斯。
你已经完成了。提交现在应该自动与合并 集成分支(如果它们没有干净地合并,它们将会失败),以及 建成。如果构建成功,则将推送合并的结果 回到远程git仓库。
现在我经常有我想要继续开发的功能分支,并且稍后只会将它们合并到master
。
据我了解,此设置将合并并在构建后立即将任何功能分支推送到master
。
(如何)Jenkins可以支持我的用例吗,构建所有功能分支,但只合并到那些我要合并的master
?
答案 0 :(得分:7)
我有一个构建管道,我只希望开发分支合并回我的稳定分支。所有其他人不应合并。我解决这个问题的方法是为合并创建一个单独的工作。构建作业完成后,只有在环境变量GIT_BRANCH等于'develop'时才会触发'merge'作业。
Jenkins没有一个非常好的条件触发器,它按照我想要的方式工作。以下是我如何设置构建作业以有条件地触发合并步骤。
因此,该过程首先删除trigger.properties文件以确保先前的运行不会发生冲突。然后,检查git分支是否正在开发。如果是,请重新创建trigger.properties文件。构建后的步骤要求存在文件以便下一个作业被触发。
现在,您可以在为此完成的工作中执行您喜欢的各种合并。您还可以修改此过程,以便多个分支进入合并作业。
答案 1 :(得分:3)
您是否看过Jenkins预先测试的提交插件? https://wiki.jenkins-ci.org/display/JENKINS/Pretested+Integration+Plugin
它的设计完全符合您所描述的目的。