代码之家  ›  专栏  ›  技术社区  ›  Johan Vergeer

如何使用Jenkins在测试服务器上运行Spring引导应用程序

  •  0
  • Johan Vergeer  · 技术社区  · 6 年前

    我不想说什么太花哨的话,但不知怎么的,我不能让它按我想要的方式工作。

    这里有一些问题。我们的目标是在测试服务器上运行Spring引导应用程序,以便我们可以对其进行一些集成测试。我们已经创建了一些Postman测试,将在Spring启动应用程序启动后在Jenkins上运行。

    简单明了地运行jar工件

    我猜最简单的方法是将jar部署到服务器并使用 java -jar my-app.1.0.0-SNAPSHOT.jar . 当我在localhost上运行此命令并转到 http://localhost:8100 我能看到网站。但当我在服务器上做同样的事情时,网站不会显示。

    为了自动启动和停止springboot应用程序,我想一个脚本会很好。

    我创建了一个脚本,它应该关闭所有正在运行的进程,然后启动一个新的进程。这个脚本将在新工件部署到测试服务器之后调用。

    #!/bin/sh
    ps | grep my-app | awk '{print $1}' | xargs kill -9 || true
    /usr/bin/java -jar my-app.1.0.0-SNAPSHOT.jar &
    

    ps 命令未正确使用:

    $ ./start-app
    
    Usage:
     kill [options] <pid> [...]
    
    ...
    

    $
     .   ____          _            __ _ _
     /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
     \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::        (v2.0.5.RELEASE)
    ...
    2018-09-29 18:11:45.142 ERROR 29971 --- [           main] o.apache.catalina.core.StandardService   : Failed to start connector [Connector[HTTP/1.1-8100]]
    ...
    

    表示另一个实例正在运行,可以通过调用 ps公司 . 我也不会得到另一个提示,直到我按下 钥匙。

    问题是:如何让Spring启动应用程序自己运行,并在新实例可用时启动它?

    1 回复  |  直到 6 年前
        1
  •  1
  •   TwiN Alireza Fattahi    6 年前

    您的问题似乎是应用程序没有被终止。

    如果该服务器仅用于测试应用程序,则可以通过运行以下命令更轻松地终止所有java进程:

    pkill -f "java"
    

    请注意,运行上述命令将杀死 . 如果您只运行一个java应用程序,这不是问题。

    以下是一个可能适合您需要的脚本:

    output=`lsof -i :8100`
    
    if [ ${#output} != 0 ]; then
        echo "Port 8100 is already running, killing all java processes"
        pkill -f "java"
    else
        echo "Port 8100 is NOT running"
    fi
    
    echo "Starting application"
    java -jar yourjarfilenamehere.jar &
    

    它的作用是:

    1. 检查端口 8100
      • 如果它不在使用中,那么它什么也不起作用
    2. 运行jar文件