我们在git中有一些代码,我开始设置Jenkins来抓住我们的分支并尝试编译。自从他们最后一次建造以来,似乎有些分支机构可能已经开始腐烂,因为它们未能完成制造。
我想构建找到的所有分支,但排除的列表除外。詹金斯有可能吗?这将让我开始运行,然后在我尝试修复它们时再回来启用更多分支。
到目前为止我尝试了什么
前瞻性的正则表达式
看看'Git>分支构建'选项我希望我可以用:替换默认的'**'通配符。用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工具链。
答案 0 :(得分:7)
如何使用
^(?!.*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
答案 1 :(得分:1)
我需要使用Jenkins工具“由regex过滤器分支”,并且我发现该regex的风格仅适用于反向引用。 因此,在Jesper响应和this issue之后,我在这里做了另外两个示例:
^(?:.*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"
我希望这对某人有帮助
编辑-New example
^(?:origin\/develop|origin\/master|origin\/release\/\d+\.\d+\.\d+(?!.)|origin\/release\/\d+\.\d+\.\d+(?:_uat|_preprod))$
或
^(?:.*develop|.*master|.*release/\d+\.\d+\.\d+(?!.))$