詹金斯通过脚本而不是Maven目标运行Maven项目

时间:2018-12-04 07:32:40

标签: java maven jenkins

我在Jenkins中具有以下预构建脚本:

#!/bin/sh set +e
kill $(lsof -t -i:8081)
mvn -f /var/lib/jenkins/workspace/project clean package
java -jar /var/lib/jenkins/workspace/project/target/site-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev 

我的Maven目标为空, enter image description here

运行Build时,出现以下错误消息

> /usr/bin/git rev-list --no-walk 044c84323d27dc3ceee93c5eebbd1c59162b6561 # timeout=10
[giant-web] $ /bin/sh -e /tmp/jenkins6442992288874687975.sh
/tmp/jenkins6442992288874687975.sh: 2: kill: Usage: kill [-s sigspec | -signum | -sigspec] [pid | job]... or
kill -l [exitstatus]
Build step 'Execute shell' marked build as failure
Finished: FAILURE

如何修复它,又有什么问题,因为此脚本可以在终端上正常工作

1 个答案:

答案 0 :(得分:1)

由于某些原因,脚本有错误。 $(lsof -t -i:8081)解析为空字符串或非pid值,从而导致错误。

[giant-web] $ /bin/sh -e /tmp/jenkins6442992288874687975.sh
/tmp/jenkins6442992288874687975.sh: 2: kill: Usage: kill [-s sigspec | -signum | -sigspec] [pid | job]... or
kill -l [exitstatus]

此框清楚地表明杀死是误用的

添加调试打印输出以查看该语句的值。

SET PID=$(lsof -t -i:8081)
echo "PID value: $PID"
kill $PID

还要检查man是否为kill,以确保您设置正确,并且不需要任何其他开关。