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

Taf*_*afT 9 regex git jenkins

我们在git中有一些代码,我开始设置Jenkins来抓住我们的分支并尝试编译.自从他们最后一次建造以来,似乎有些分支机构可能已经开始腐烂,因为它们未能完成制造.

我想建立所有找到的分支,除了排除的列表.詹金斯有可能吗?这将让我开始运行,然后在我尝试修复它们时再回来启用更多分支.

到目前为止我尝试过的

前瞻性的正则表达式

看看'Git> Branches to build'选项我希望我可以用以下代码替换默认的'**'通配符:使用http://rubular.com/进行一些挖掘和双重检查表明以下可能会做我想要的.

:^(?原点/排除\ - 这个\分枝\ .v1 |原点/排除\ - 这个\分枝\ -too.v2)(\ S +)

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

在这里寻找类似的问题

我遇到了Jenkins/Hudson Build All Branches With Prioritization,似乎包含了一个可能的解决方案,其中一些添加了一个反向选项来分支匹配https://github.com/jenkinsci/git-plugin/pull/45听起来像我需要的.可悲的是,这似乎不是我所拥有的詹金斯版本,这很奇怪,因为2011年很久以前.

我正在使用的系统

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

Luk*_*age 10

我需要使用 Jenkins 工具“通过正则表达式过滤分支”,并且我发现该正则表达式的风格仅适用于反向引用。因此,根据Jesper 的回复和这个问题,我在这里又做了两个例子:

^(?:.*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"
Run Code Online (Sandbox Code Playgroud)

我希望这对某人有帮助

编辑-新示例

^(?:origin\/develop|origin\/master|origin\/release\/\d+\.\d+\.\d+(?!.)|origin\/release\/\d+\.\d+\.\d+(?:_uat|_preprod))$
Run Code Online (Sandbox Code Playgroud)

或者

^(?:.*develop|.*master|.*release/\d+\.\d+\.\d+(?!.))$
Run Code Online (Sandbox Code Playgroud)


Jes*_*sen 7

如何使用

^(?!.*master).*$
Run Code Online (Sandbox Code Playgroud)

作为分支说明符.这个正则表达式意味着所有分支都不匹配主.

分解:

^(?!.*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
Run Code Online (Sandbox Code Playgroud)

相关:https://stackoverflow.com/a/18709097/109305