在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