Regex 我如何配置Jenkins来构建除我排除的几个分支之外的所有分支?

Regex 我如何配置Jenkins来构建除我排除的几个分支之外的所有分支?,regex,git,jenkins,Regex,Git,Jenkins,我们在git中有一些代码,我开始设置Jenkins来获取我们的分支并尝试编译。似乎有几根树枝在上一次建造后的几年里开始腐烂,因为它们没有完成一次制作 我想构建找到的所有分支,除了排除的分支列表。这在詹金斯有可能吗?这将使我能够启动并运行一些东西,然后在我尝试修复它们时,回来启用更多的分支 到目前为止我所尝试的 具有前瞻性的正则表达式 查看“Git>要构建的分支”选项,我希望可以将默认的“**”通配符替换为:。仔细研究并仔细检查一下,我发现下面的内容可能会满足我的要求 :^(?!origin/ex

我们在git中有一些代码,我开始设置Jenkins来获取我们的分支并尝试编译。似乎有几根树枝在上一次建造后的几年里开始腐烂,因为它们没有完成一次制作

我想构建找到的所有分支,除了排除的分支列表。这在詹金斯有可能吗?这将使我能够启动并运行一些东西,然后在我尝试修复它们时,回来启用更多的分支

到目前为止我所尝试的

具有前瞻性的正则表达式

查看“Git>要构建的分支”选项,我希望可以将默认的“**”通配符替换为:。仔细研究并仔细检查一下,我发现下面的内容可能会满足我的要求

:^(?!origin/exclude \-this \-branch \.v1 | origin/exclude \-this \-branch \-too.v2)(\S+)

现在这里有一个关于在后台运行的正则表达式引擎的假设。我希望它能理解前瞻,但如果不能理解,这就解释了为什么这个方法会失败。它似乎建立了所有的分支,包括我试图排除的分支。也许我只需要再找一些调试

在这里寻找类似的问题

我发现其中似乎包含了一个可能的解决方案,一些人在分支匹配中添加了一个反向选项,听起来就像我需要的一样。遗憾的是,我的詹金斯版本中似乎没有这一点,这很奇怪,因为2011年是很久以前的事了

我正在使用的系统

Ubuntu LTS 14.04。詹金斯。1.611. 制作C/C++代码的GNU工具链

使用

^(?!.*master).*$
作为分支说明符。此regexp表示所有与master不匹配的分支

细分:

^(?!.*master).*$
^                ---> beginning of string
 (?!        )    ---> negative lookahead find all that doesnt match
    .*           ---> zero or more of 'any' character
      master     ---> should not match master
             .*$ ---> will match anything to the end of string

相关:

我需要使用Jenkins工具“filter branch by regex”,我发现regex的风格只需反向引用即可工作。 在回答之后,我又举了两个例子:

^(?:.*release\/\d+.\d+.\d+(?!.))$
// check all branches like "release/0.0.0" or "origin/release/1.2.3"
^(?:.*release\/\d+.\d+.\d+_any)$
// check all branches like "release/0.0.0_any" or "origin/release/1.2.3_any"
我希望这对某人有帮助

编辑-


这简直是一场灾难。您应该编写一个只匹配要排除的分支的正则表达式(或者更简单的方法是添加多个“分支到构建”条目),然后使用“反向”选择策略。@Christopher这听起来像是我需要的解决方案。我就是找不到反向选项隐藏在哪里。我已经尝试过了,但它似乎不起作用,仍然试图构建被排除的分支,但我会坚持下去。你是否应该把你的评论作为一个答案,以便我选择它,或者这不是重复的处理方式?我在问题中说,我已经尝试过这个,但它不起作用。也许RegEx引擎已经在过去两年中进行了更新,所以现在可以工作了。最后,我按照Christopher的建议使用了反向选择策略。如何对两个分支(如主分支和功能分支)使用ignore通常,向前看(或向后看)断言只适用于固定长度的字符串。此外,在这种特殊情况下,我认为不能使用“|”来组合要排除的内容—相反,必须在一行中定义多个否定的前瞻断言。参考:这些
零件的用途是什么?:
零件?第一个简单的正则表达式不应该是
^.*release\/\d+。\d+。\d+$
?嗨,Aaron,我给你代码授权,在我使用这些正则表达式的地方:
触发器{gitlab(triggerOnPush:true,triggerOnMergeRequest:false,branchFilterType:'RegexBasedFilter',targetBranchReggex:'^(?((?!feature.))*$)}
如果你不使用它,那个扳机坏了。
^(?:origin\/develop|origin\/master|origin\/release\/\d+\.\d+\.\d+(?!.)|origin\/release\/\d+\.\d+\.\d+(?:_uat|_preprod))$
^(?:.*develop|.*master|.*release/\d+\.\d+\.\d+(?!.))$