上篇文章罗列了jenkins持续集成的步骤,其中踩到了不少坑,在本篇里记录下,希望能给大家一些解决问题的思路。
1.构建时,从github拉取代码失败:
报错部分代码如下:
ERROR: Timeout after 10 minutes ERROR: Error cloning remote repo ‘origin‘ hudson.plugins.git.GitException: Command "/usr/local/git/bin/git fetch --tags --progress -- [email protected]:May-Fan/AutoApiTestDemo.git +refs/heads/*:refs/remotes/origin/*" returned status code 128: stdout: stderr: Warning: Permanently added the RSA host key for IP address ‘13.229.188.59‘ to the list of known hosts. remote: Enumerating objects: 581, done.
遇到这个问题,百度过后解决方案如下:
1.检查ssh key是否配置正确。配置方法上一篇中有讲过,必须将公钥复制到github,私钥复制到jenkins。如果不确定,可以进入项目->配置->源码管理:
看看这个地方会不会报错。我为了演示错误的截图,在github的url后面添加了~,因此报的是无效的仓库地址。具体需要结合报错的信息来看。如果不报错,那ssh key配置无误了;
2.查看服务器是否安装了git。同样也是在上图的位置,如果git未安装,会提示git运行出错,验证的办法是在服务器输入git --version指令;
3.如果上图中的配置已经不再报错,项目构建时仍然报错,需要进入对应项目->工作空间->清理工作空间,然后重新构建;
4.当经历了1,2,3之后,构建时仍然会报错,需要考虑是否因为项目内容过多,git加载超时报错的情况。如下图,进入项目配置,勾选浅克隆,只拉取最新版本的代码,可以大大减少构建时间,并将超时的时间从原来默认的10修改为60,重新构建。这样git部分的指令就不会再报错了。
2.jenkins无法识别mvn指令
具体报错信息如下:
+ mvn clean package /tmp/jenkins4746628215257020380.sh: line 9: mvn: command not found Build step ‘Execute shell‘ marked build as failure Finished: FAILURE
解决的思路如下:1.确认服务器中是否安装了maven;2.确认shell中是否加载了配置文件。
maven确认安装,而我的shell脚本当中,第一行source /etc/profile也已经加载了配置文件:
source /etc/profile pid=$(ps x | grep api-1.0-SNAPSHOT.jar | grep -v grep | awk ‘{print $1}‘) if "[-n ‘$pid‘]" ; then kill -9 $pid fi cd api mvn clean package //这行的mvn指令报错了 cd target pwd BUILD_ID=dontKillMe nohup java -jar api-1.0-SNAPSHOT.jar &
这是因为:jenkins默认情况下执行shell脚本是使用非登录方式,执行shell脚本时不会去加载/etc/profile。
找到原因后,参考了很多网上的解决方法,比如在shell脚本前添加#!/bin/sh -l,又或者在jenkins中配置全局的maven变量,又或者将maven的文件夹的拥有者和所在组都递归赋给jenkins用户,都没有解决我的问题。最终我使用了最简单粗暴的方式,将上面报错的mvn命令,直接替换成服务器上which mvn得到的绝对路径:
source /etc/profile pid=$(ps x | grep api-1.0-SNAPSHOT.jar | grep -v grep | awk ‘{print $1}‘) if "[-n ‘$pid‘]" ; then kill -9 $pid fi cd api //下面的mvn替换成绝对路径 /home/May/apache-maven-3.6.3/bin/mvn clean package cd target pwd BUILD_ID=dontKillMe nohup java -jar api-1.0-SNAPSHOT.jar &
同时,修改jenkins配置文件:
vim /etc/sysconfig/jenkins //进入后将用户从jenkins替换成root
重新构建,终于构建成功。
原文地址:https://www.cnblogs.com/May-study/p/12365469.html