如何使用jenkins管道将war部署到tomcat?

2024-03-12

我想使用管道部署 war 文件。 正确的做法是什么。有没有办法在管道代码中使用部署到容器。 调用catalina.sh或使用curl命令使用jenkins管理器进行部署的问题是我找不到任何方法来检测成功的部署。

有没有标准的方法可以做到这一点


在tomcat中,部署war有两种选择:

  • 将 war 复制到 webapps 文件夹
  • 将战争上传到/经理/文本/部署Tomcat 发布的 http 端点

这里有一些部署战争并获取部署状态(成功|失败)的方法

您可以将以下代码片段之一放入管道的部署阶段或迁移到 groovy。

/经理/文本/部署

这是一个端点,允许我们将 war 从远程主机上传到 tomcat 服务器并作为响应:

  • HTTP状态200表示成功或失败,不加区分
  • Http 正文如下:
OK - Deployed application at context path /foo
FAIL - Deployed application 
at context path /my_app 
but context failed to start 

因此,为了检测一切是否正常,我执行此验证:

CURL_RESPONSE=$(curl -v -u $TOMCAT_USER:$TOMCAT_PASSWORD -T $WAR_PATH "http://$TOMCAT_HOST:$TOMCAT_PORT/manager/text/deploy?path=/$CONTEX_NAME&update=true")    

if [[ $CURL_RESPONSE == *"FAIL"* ]]; then
  echo "war deployment failed"
  exit 1
else    
  echo "war deployed successfully "
  exit 0
fi

您可以在此处找到启用此端点所需的配置:

  • https://stackoverflow.com/a/37622865/3957754 https://stackoverflow.com/a/37622865/3957754

将war文件复制到webapps

将 war 文件复制到 webapps 后,您可以列出已部署的应用程序,并在 http 正文响应中找到您的应用程序的名称:

OK - Listed applications for virtual host localhost
/manager:running:0:manager
/:running:0:ROOT
/docs:running:0:docs
/examples:running:0:examples
/host-manager:running:0:host-manager
/my_app:running:0:my_app
/my_other_app:running:0:my_other_app

您可以使用带中断的循环作为最大尝试次数。

您可以在此处找到启用此端点所需的配置:

  • https://stackoverflow.com/a/40722537/3957754 https://stackoverflow.com/a/40722537/3957754

/健康或/状态

这更干净,据我所知,几个监控平台都使用这种策略。

所有这些都包括在您的应用程序中公开一个额外的 http 端点(Web 应用程序、api 休息、守护进程等)

该端点必须返回以下响应之一:

  • http状态

    • (200):表明您的应用程序中的一切都正常
    • (!200):表明您的应用程序有问题。如果您的应用程序未正确部署,此端点将返回 404。
  • xml 或 json

{
 "status":"200",
 "database_connectivity":"200",
 "read_write_disk":"200",
 "etc":"etc"
}

最后,您可以使用循环从 Jenkins 管道使用此 /health 端点。此策略将允许您从外部平台监控您的应用程序,例如:

  • https://www.site24x7.com/ https://www.site24x7.com/
  • Pingdom
  • 新遗物
  • etc
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用jenkins管道将war部署到tomcat? 的相关文章

随机推荐