当前位置:  开发笔记 > 运维 > 正文

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

如何解决《如何使用Jenkins预构建分支仅合并我要合并的分支?》经验,为你挑选了1个好方法。

我正在阅读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存储库设置为仅接受来自Jenkins的集成分支的提交.

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

现在我经常有我想要继续开发的功能分支,并且只能将它们合并到master以后.

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

(如何)Jenkins可以支持我的用例,构建所有功能分支,但只合并那些master我要合并的那些吗?



1> Tim Rupe..:

我有一个构建管道,我只希望开发分支合并回我的稳定分支.所有其他人不应合并.我解决这个问题的方法是为合并创建一个单独的工作.构建作业完成后,只有在环境变量GIT_BRANCH等于'develop'时才会触发'merge'作业.

Jenkins没有一个非常好的条件触发器,它按照我想要的方式工作.以下是我如何设置构建作业以有条件地触发合并步骤.

添加构建步骤以删除名为trigger.properties的文件(我使用Execute Shell构建步骤)

添加构建步骤(conditional-buildstep插件)如果$ GIT_BRANCH等于"origin/develop",则运行条件步骤(单个).如果为true,则运行shell命令以创建trigger.properties文件.(touch trigger.properties)

添加后构建操作(参数化触发器插件)以在构建稳定时触发我的合并作业.在"参数来自属性文件"部分中,使用"trigger.properties"填写该字段.有一个选项"如果缺少任何文件,请不要触发",所以检查一下.

因此,该过程首先删除trigger.properties文件,以确保先前的运行不会发生冲突.然后,检查git分支是否正在开发.如果是,请重新创建trigger.properties文件.构建后步骤要求存在文件以便下一个作业被触发.

现在,您可以在为此完成的工作中执行您喜欢的各种合并.您还可以修改此过程,以便多个分支进入合并作业.

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有