您的位置:

Jenkins构建失败

一、Jenkins构建失败怎么看失败问题

Jenkins构建失败是一个非常常见的问题,出现的原因也是非常多样。举个例子,当你在构建 Maven 项目时,可能会出现下面这样的报错信息:

[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /path/to/your/java/file.java:[28,61] cannot find symbol
  symbol:   method someMethod()
  location: class MyClass
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------

这个错误信息告诉你,Maven 编译过程中有一些符号无法找到,具体来说是在 MyClass.java 的第 28 行,其中生僻的代码片段 someMethod() 函数无法被找到。这就需要我们逐步查明问题所在。

1、查看构建日志

在 Jenkins 的构建历史记录页面中,你可以找到构建失败后的日志记录。这是进一步了解问题的绝佳资源。

Started by user Tom
Building in workspace /var/lib/jenkins/workspace/myproject
[... some information about the project ...]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 21.137 s
[INFO] Finished at: 2019-03-22T17:44:20+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project myproject: Compilation failure: Compilation failure: 
[ERROR] /path/to/your/java/file.java:[28,61] cannot find symbol
[ERROR] symbol:   method someMethod()
[ERROR] location: class MyClass
[ERROR] -> [Help 1]
[ERROR] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[ERROR] ------------------------------------------------------------------------

这是上述 Maven 项目构建失败的一个示例,其中红色部分是关键信息:错误发生在 MyClass.java 文件的第 28 行。

2、查看 Console Output

一个更直观的办法是查看 Jenkins 的构建控制台日志。

如果你使用 Maven 进行构建,你会在 Jenkins 日志的开头找到 Maven 的运行信息。Maven 通常会输出红色的 [ERROR] 信息以提示你错误的发生位置。

3、使用 Jenkins 提供的插件

Jenkins 社区提供了许多插件来帮助你解决构建失败的问题。比如,当你在构建 Maven 项目时,你可以使用 Maven Dashboard 插件进行分析。

二、Jenkins构建失败找不到符号

Jenkins 构建失败的一个常见问题是“找不到符号”。比如,上面的示例中就出现了这个问题。在 Maven 编译中,这通常意味着类路径中没有指定的类库或者类库版本不正确。

1、查看依赖关系

构建失败可能是因为某个依赖项无法从 Maven 仓库中找到。此时,你需要检查你的 Maven 配置文件 pom.xml 中的依赖项是否正确。有一个非常实用的 Maven 插件,可以帮助你找出依赖关系的问题:Maven Dependency Plugin。

mvn dependency:tree

该命令将显示所有 Maven 项目依赖项的树形结构。这可以帮助你轻松找到依赖关系的问题,以支持正常构建。

2、查看工作目录中的所有文件

当你的 Maven 项目编译失败时,可能是因为目录中的某个 java 文件编译失败。那么,你需要检查目录中的所有文件并解决问题。

find . -name '*.java' | xargs javac

上述命令将编译所有的 Java 文件,并输出任何编译错误。

三、Jenkins构建失败常见问题

1、权限问题

Jenkins 在运行项目时,需要访问脚本和文件。如果你遇到构建失败,且失败信息中没有明确指明是什么问题,那么你可能需要检查 Jenkins 运行时的权限。在 Linux 系统中,你可以检查文件的 rwx 权限:

ls -l

2、构建的磁盘空间满了

Jenkins 服务器的构建目录可能会满,这样就会导致后续构建失败。这种情况下,你只需要在文件系统中释放一些空间,就可以解决问题。

3、Jenkins 占用的内存不足

如果 Jenkins 构建失败时,你遇到诸如“Out of Memory”之类的错误,那么你需要为 Jenkins 分配更多的内存。在 /etc/init.d/jenkins (Debian/Ubuntu) 或 /etc/sysconfig/jenkins ( CentOS/RHEL) 中,你可以找到相应的参数(比如 – Xmx 或者 Xms),以控制 Jenkins 的内存分配。

四、Jenkins删除构建的项目

1、手动删除

可以手动删除 Jenkins 构建历史记录中的项目记录。进入 Jenkins 的“管理 Jenkins”页面,然后点击“删除构建”按钮即可实现。

2、使用 Jenkins 插件

你也可以使用 Jenkins 提供的插件来删除构建历史记录。例如,你可以使用 Jenkins Job Manager 插件。

jenkins-jobs --conf /etc/jenkins_jobs/jenkins_jobs.ini delete my-job

该命令将删除名为 my-job 的 Jenkins 任务。