代码之家  ›  专栏  ›  技术社区  ›  Almas Abdrazak

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

  •  0
  • Almas Abdrazak  · 技术社区  · 6 年前

    我在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 
    

    我的马文进球是空的, 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 回复  |  直到 6 年前
        1
  •  0
  •   Antoniossss    6 年前

    由于某些原因,脚本出现错误。$(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
    

    同时检查人的 kill 为了确保你做的对,你不需要任何额外的开关。