在使用Jenkins一些基本功能的时候,或者说是基本插件的时候,会遇到各种各样的报错。这里就设想模拟一下,重现一下以前遇到过的问题,记录一下。虽说是Jenkins使用过程中出现这样的问题,但实际上可以把这种思路应用在运维其他问题的排查逻辑上面。这种分享也符合我们的技术积累信条,欲成大事,比以史为鉴。
一、在使用插件Invoke Phing targets的时候。
1、报错:java.io.IOException: Cannot run program "phing" (in directory "/var/lib/jenkins/workspace/**"): error=2, No such file or directory
在使用Invoke Phing targets插件的过程中,就是要读取系统的xml文件,如果没有安装phing工具的话就读取失败,从而整个构建都会失败。在Debian系列的系统里面,这里是用Ubuntu 18.04就用apt在线安装phing。
命令:apt-get install phing
重新构建发现问题解决了。
2、报错:/var/lib/jenkins/workspace/boztax/build.xml:104:75: buildnumber not defined!
这种问题就是在执行build.xml的过程中发现里面的配置不对的报错。错误提示中是变量buildnumber没有定义,印象中是控制台定义,然后build.xml调用。我们先回到控制台,
我们看到问题了,是控制到定义buildnumber的时候放错了位置,导致没有生效,然后build.xml调用的时候就报错了。改正的时候就解决。
二、使用publish over ssh的时候的错误。
添加构建步骤。'Send files or execute commands over SSH',我们就可以连着打包和发送这两个步骤一起来使用。
我们打包好文件,按照逻辑就应该发送过去,之后再解压。可是,构建失败了,我们看看失败的控制台输出,
绿色的表示构建步骤已经通过,红色的部分表示开始报错,是我们重点分析的部分。
绿色部分也有好几个报错,但是都是定义文件中的定义。比如说,删除dist文件夹,那是因为在我们生成的文件中标避免冲突,如果没有这个文件,那就应该这样,没有找到可删除的文件。绿色最后一行也是表明文件已经打包。
红色部分就是在远程服务器上面说找不到文件,那很有可能就是本地生成了,而没有传过去。下面验证一下,
先去本地看看有没有文件,
已经查证生成了打包文件,前面我们配置了ssh key到远程服务器,现在再次验证一下文件到底能不能传过去,
证明私钥可用,看看控制台验证,
控制台测试成功!
既然没有在传输的时候报错,下一个猜想就是可能传过去了,但是控制台的目录设置错乱,不知道传去远程服务器哪个位置了。(实际上经过了半天的思索才觉得有这种可能)
怎么在目录前缀就有/root呢?后面的目录就正确。。控制台设置的明明就是/home/data啊。
但是,在考虑的同时,想起/root在哪里出现过,没错,
就是这里,在系统全局配置的时候。关于ssh的远程根目录有设置,东西放错位置了,所以tar解压的时候找不到文件。改回来的话,一切迎刃而解。