我会要求您检查一下,因为我不确定它是否是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]+)*)*$
答案 0 :(得分:1)
您遇到catastrophic backtracking,可能是因为嵌套循环以及可选的[\-]?
和[\.]?
。当模式不匹配时,这通常很痛苦,正如您所经历的那样。
请改用此模式:
^com\.mycompany\.[a-z0-9]+(?:[.\-][a-z0-9]+)*$
com!mycompany?job
[a-z0-9]+
- 一个字。(?:[.\-][a-z0-9]+)*
- 零个或多个单词。在每个单词之前有一个句号或连字符。