jenkins运行shell脚本启动项目显示成功但项目没启动
jenkins的安装部署就不说了。我这个项目是从一个原来的项目复制后直接修改相应配置的,将需要的都配置好后发现会运行指定的shell脚本,但是项目就是不启动。但我被复制的项目是好的。
一、问题排查
1.看控制台输出发现还真有问题: ERROR: Exception when publishing, exception message [Exec exit status not zero. Status [-1]] Finished: UNSTABLE 2.后来经过百度很多人都说是因为ps查询到的进程包含查询进程自身,当管道进行到kill的时候,所有进程一同被杀死。解决方法:在查找项目进程号时加上“grep -v grep”排除掉它自身。
但我的本来就加了这个,所以并没有解决我的问题。 我的脚本: 3.后来又看到说磁盘满了,也不是。。。
4.后来找到个在 SSH Publishers的Exec command最后加上ps -ef | grep java,这个最后显示Finished: successed了,但是错误还是在。加这个作用时给它一个返回值,jenkins读到了脚本的返回值就显示成功了,但是这跟错误无关,项目还是没起来。
5.此时我已经折腾了半天了,无奈。。我只能从脚本下手了,我发现正常的项目打印查到的pid都只有一个,但是这个项目有两个以上,我想这就是问题所在了。于是继续百度,在脚本第一行加BUILD_ID=dontkillme,没用没用。。。
二、问题确定
按理来说不可能有问题,我的脚本单独执行没问题,而且其他类似的项目除了路径不一样其他都一样一点问题没用。于是我只能从脚本里面的内容进行修改测试,用排除法来解决。
1.后面我在脚本加了个输出,看往哪走。下面是我修改后的脚本: 2.结果它打印了“正常启动啦!!!”,于是可以确定问题有以下几个: (1).查找进程号查到多个,并且被kill掉了。 (2).但是继续往下走了,后面的启动脚本又没有执行。
三、问题解决
1.最后我从项目路径下手了,我本项目跟其他项目在shell里写的都是绝对路径,但是我发现jpush-app-1.0中的0是红色,说实话,我也没明白里面的字体颜色啥意思。但我感觉它就是有问题。其实一开始就看到了,但没怀疑到它身上。
2.然后我把jpush-app-1.0改为jpush-app,嗯。。。好了。。。
四、总结
1.查找pid时加上grep -v grep 2.检查磁盘内存 3.SSH Publishers的Exec command最后加上ps -ef | grep java 4.项目路径有数字或者多个-(具体啥原因还没弄清楚,弄清楚了再来加上),如果以上没解决,考虑项目路径,尽量简单点。
|