问题:创建新工作时出现 Jenkins 错误?

我会请你检查一些东西,因为我不确定它是否是 Jenkins 错误,或者它是否与我们的内部设置有关。请告诉我在工作名称中使用大写字母时是否也遇到异常。

错误描述:

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

在意识到我想检查更多详细信息并转到监控页面后。我使用 Jenkins 的监控插件。我发现的是“当前请求”中一直在运行的线程......名为“checkJobName”。我手动将其杀死,服务器恢复正常。

原因:

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

解决方案:

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

\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]+)*)*$

解答

您正在经历灾难性回溯,这可能是因为嵌套循环和可选的[\-]?[\.]?。正如您所经历的那样,当模式_不_匹配时,这通常会很痛苦。

请改用此模式:

^com\.mycompany\.[a-z0-9]+(?:[.\-][a-z0-9]+)*$
  • 转义点。你不要com!mycompany?job

  • [a-z0-9]+- 一个字。

  • (?:[.\-][a-z0-9]+)*- 零个或多个单词。在每个单词之前都有一个句号或连字符。

Logo

CI/CD社区为您提供最前沿的新闻资讯和知识内容

更多推荐