Дженкинс запускает проект Maven через сценарий вместо цели Maven - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть следующий сценарий предварительной сборки в 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

, когда я запускаю сборку, у меня естьследующее сообщение об ошибке

> /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 голосов
/ 04 декабря 2018

Скрипт неисправен по некоторым причинам.Либо $ (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]

В этом блоке четко указано, что kill * неправильно используется

Добавьте распечатку отладки, чтобы увидеть значение этого оператора.

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

также проверьте man на kill, чтобы убедиться, что вы правильно поняли, и вам не нужен дополнительный переключатель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...