在tomcat中,部署war有两种选择:
- 将战争复制到 webapps 文件夹
- 将战争上传到 /manager/text/deploy 由您的 tomcat 发布的 http 端点
这里有一些部署战争和获取部署状态的方法(成功|失败)
您可以将以下 sn-ps 之一放在管道的部署阶段或迁移到 groovy。
/manager/text/deploy
这是一个端点,它允许我们将战争从远程主机上传到 tomcat 服务器并作为响应:
- http status 200 表示成功或失败不分先后
- Http Body 喜欢:
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
您可以在此处找到启用此端点所需的配置:
将war文件复制到webapps
将war文件复制到webapps后,您可以列出已部署的应用,并在http body响应中找到您的应用名称:
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
您可以使用带中断的循环作为最大尝试次数。
您可以在此处找到启用此端点所需的配置:
/health 或 /status
这样更干净,据我所知,有几个监控平台使用这种策略。
所有内容都包括在您的应用程序中公开一个额外的 http 端点(Web 应用程序、api rest、守护程序等)
此端点必须返回以下响应之一:
-
http 状态
- (200) : 表明你的应用程序一切正常
- (!200):表明你的应用有问题。如果您的应用未正确部署,此端点将返回 404。
xml 或 json
{
"status":"200",
"database_connectivity":"200",
"read_write_disk":"200",
"etc":"etc"
}
最后,您可以使用循环从您的 Jenkins 管道中使用此 /health 端点。此策略将允许您从外部平台监控您的应用,例如: