这是我目前为项目设置的Jenkins:
-
一个作业运行所有开发分支
-
一个作业运行所有拉取请求
-
一个作业只运行主分支
-
一个作业仅在主要通过时才进行自动发布
这种设置使我可以在开发过程中持续自动交付以及持续反馈 . 前3个工作也运行所有测试和覆盖报告 .
问题是我找不到从“所有开发分支”工作中排除主分支的方法 . 每次合并一个pull-request时,它都会不必要地构建master两次 .
有谁知道如何从詹金斯的工作中排除一个分支?
ps:我正在使用Git和Github插件 . 我的项目存储在Github上 .
4 回答
您可以选择“反向”策略来定位分支以构建 .
查看Jenkins的工作配置,
"Source Code Management"部分(选择"Git")
其他行为
单击"Add"按钮
选择"Strategy for choosing what to build"
在组合框中选择"Inverse"策略 .
(不要忘记用“master”填写“Branches to build”文本字段)
另见附件截图图片:
您可以使用
:^(?!.*master).*$
作为Jenkins中的分支说明符,并且将构建除master之外的所有分支 . 见答案:https://stackoverflow.com/a/18709097/444639您可以使用Repository,按名称过滤(通配符) . 这里只提供:^(?! . master) . $ .
或者您可以使用通配符过滤器分支并在那里排除master:
因为它成功扫描但后来从组织文件夹扫描中删除,以防您使用github或bitbucket团队项目 .
@Mike的答案对大多数人都有效,但请注意
:^(?!.*master).*$
将匹配任何不包含master的东西,即也不会构建名为feature/add-remaster-functionality
的分支 . 更好的方法是:^(?!.*^master$).*$
,它只匹配master,甚至:^(?!.*^(master|origin/master)$).*$
,它将匹配master或origin / master .