jenkins连接Gitee打包成功但是Post build task失败

问题遇到的现象和发生背景

使用docker安装jenkins。在jenkins上新建了一个maven项目,连接Gitee配置完成。同时在这个项目中配置Post build task
配上一段shell脚本。maven能打包成功,但是Post build task执行的shell脚本执行失败,/tmp/jenkins454199558142677876.sh: line 6: ps: command not found 产生这个错误。但是
ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' 这个命令在服务器控制台能正常执行。

遇到的现象和发生背景,请写出第一个错误信息

img


img

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
#!/bin/bash

# 这里可替换为你的 war 或 jar 包路径
APP_NAME=zzh-aliyun-reptile-admin/target/zzh-aliyun-reptile-admin-0.0.1-SNAPSHOT.jar

# 检查程序是否在运行
pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
date > //root/log/zzh-aliyun-reptile-admin-start.log
if [ -z "${pid}" ]; then
    # 如果程序不存在直接启动程序,根据个人需求是否需要指定端口号
    nohup java -jar -Dspring.profiles.active=release $APP_NAME >> //root/log/zzh-aliyun-reptile-admin-start.log 2>&1 &
else
    # 如果已经执行,将程序停止
    echo '程序目前启动中,正在关闭程序...' >> //root/log/zzh-aliyun-reptile-admin-start.log
    kill -9 $pid
    echo '已关闭运行中的程序~' >> //root/log/zzh-aliyun-reptile-admin-start.log
    # 停止之后启动程序,根据个人需求是否需要指定端口号
    nohup java -jar -Dspring.profiles.active=release $APP_NAME >> //root/log/zzh-aliyun-reptile-admin-start.log 2>&1 &
fi
运行结果及详细报错内容

img


img

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

尝试过几种方式:1,shell脚本中改成#!/bin/bash -ilex
加上source /etc/profile
2.在jenkins的系统管理->系统配置下配置全局属性环境变量,jenkins构建的时候出现新的问题:

img

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

我想要jenkins能构建成功,Post build task中的shell脚本执行成功,能正常运行jar包

你的docker里面没有ps这个命令,安装一下就好了。
如果是 Ubuntu系的直接在docker里 执行这个命令试试

apt-get update && apt-get install procps

可能是由于在Jenkins中执行的shell脚本所在的环境中缺少ps命令导致的。可以试试在shell脚本中添加ps命令所在的路径,比如在脚本开头添加如下代码:

PATH=$PATH:/usr/bin

或者试试在Jenkins中配置环境变量。
另外第二个错误是因为 log 文件夹不存在,需要先创建文件夹。
还有一点就是需要更改脚本中的文件路径为绝对路径。
仅供参考,望采纳,谢谢。

最终执行命令,是在宿主机还是在docker?别搞混了

你用的哪个docker镜像,官方的镜像是有的

怀疑你写的shell脚本是不是有逻辑错误,这个可以检查一下,再者就是Jenkins的版本兼容问题,可以上社区逛一圈。

不知道你解决了没有,如果没有解决,我们可以聊聊


我怀疑jenkins运行的环境有问题,你看看jenkins中是不是配置了多个环境导致。

这个可以简单的验证,你直接进入到docker中,运行下你的shell有没有问题就 可以知道。

针对最后一个问题,可以使用下面的方案
https://www.likecs.com/show-306389394.html

看看这个实例解题思路:

jenkins找不到命令一般有两种解决方式(前提是jenkins所在用户组有该命令的执行权限):
1、增加环境变量:在待执行的shell脚本前,执行export命令:export PATH = xxx:$PATH(xxx为找不到命令的所在目录)
2、脚本中直接使用命令的绝对路径:/usr/local/bin/py.test xxxx

使用第2种方法尝试解决
在linux中使用命令which pytest,找到pytest命令的路径 (我找到的路径为/root/anaconda2/bin/pytest)
在jenkins命令中更改为 /root/anaconda2/bin/pytest /home/ling/test_do.py