如何从Jenkins的建筑中排除git分支

时间:2014-01-23 16:58:44

标签: git jenkins

以下是我目前为项目设置的Jenkins:

  • 一个作业运行所有开发分支
  • 一个作业运行所有拉取请求
  • 一个作业只运行分支
  • 只有当主人通过
  • 时,一个作业才能进行自动发布

此设置允许我在开发过程中持续自动交付以及持续反馈。前3个工作也运行所有测试和覆盖报告。

问题是我找不到从“所有开发分支”作业中排除主分支的方法。每次合并一个pull-request时,它都会不必要地构建master两次。

有人知道如何从Jenkins的工作中排除一个分支吗?

ps:我正在使用Git和Github插件。我的项目存储在Github上。

4 个答案:

答案 0 :(得分:62)

您可以选择“反向”策略来定位分支以构建。

查看Jenkins作业配置,

  • “源代码管理”部分(选择“Git”)
  • 其他行为
  • 点击“添加”按钮
  • 选择“选择建造什么的策略”
  • 在组合框中选择“反向”策略。

(不要忘记用“master”填写“Branches to build”文本字段)

另见附件截图:


enter image description here

答案 1 :(得分:14)

您可以使用:^(?!.*master).*$作为Jenkins中的分支说明符,并且将构建除master之外的所有分支。见答案:https://stackoverflow.com/a/18709097/444639

答案 2 :(得分:1)

您可以使用Repository,按名称过滤(通配符)。这里只提供:^(?!。 master)。 $。 skipmaster1

或者你可以使用通配符过滤器分支并在那里排除master:skipmaster2 因为它成功扫描但后来从组织文件夹扫描中删除,以防您使用github或bitbucket团队项目。 enter image description here

答案 3 :(得分:0)

@Mike的答案适用于大多数情况,但请注意,:^(?!.*master).*$将与不包含master的任何内容匹配,即,也不会建立名为feature/add-remaster-functionality的分支。更好的方法是:^(?!.*^master$).*$,仅匹配母版,甚至:^(?!.*^(master|origin/master)$).*$,它匹配母版或原始/母版。