詹金斯在创造新工作时犯了错​​误?

时间:2014-07-09 12:15:50

标签: regex jenkins

我会要求您检查一下,因为我不确定它是否是Jenkins错误或是否必须对我们的内部设置执行某些操作。在工作名称中使用大写字母时,请告诉我您是否还要面对例外情况。

错误说明:

当我按下按钮"创建",tomcat cpu使用率直接爆炸到Jenkins服务器上的99%时,新创建作业的配置页面永远不会显示并且停止浏览器加载没有影响CPU使用率。

在认识到我想查看更多细节并进入监控页面之后。 我使用Jenkins的Monitoring插件。而我发现的是"当前请求"那个一直在运行...命名" checkJobName"。 我手动杀了它,服务器恢复正常。

原因:

阅读" checkJobName"让我想到让我找到解决方案的东西:当我想创建一个新工作时,只要工作密钥只包含小写,一切都很好。 当我填写大写字母时,我总是遇到上述错误。

解决方案:

在面对这个错误之前,我的公司使用正则表达式来限制作业名称。在Jenkins下 - >管理Jenkins - >配置系统 - >限制项目命名我们有以下RegExp:

\bcom.mycompany.\b[a-z0-9]+(([\-]?[a-z0-9]+)+|([\.]?[a-z0-9]+)+)*+$

但似乎这并没有检查整个单词,因为在使用" com.mycompany.test.myUpperCaseTest"这样的名字时仍允许使用大写字母。为了避免上面的错误,我更改了RegExp,以便只允许小写:

\bcom.mycompany.\b[a-z0-9]+(([\-]?[a-z0-9]+)*|([\.]?[a-z0-9]+)*)*$

1 个答案:

答案 0 :(得分:1)

您遇到catastrophic backtracking,可能是因为嵌套循环以及可选的[\-]?[\.]?。当模式匹配时,这通常很痛苦,正如您所经历的那样。

请改用此模式:

^com\.mycompany\.[a-z0-9]+(?:[.\-][a-z0-9]+)*$
  • 逃脱点。你不想要com!mycompany?job
  • [a-z0-9]+ - 一个字。
  • (?:[.\-][a-z0-9]+)* - 零个或多个单词。在每个单词之前有一个句号或连字符。