我想使用管道部署war文件。 什么是正确的方法。有什么方法可以在管道代码中使用“部署到容器”。 调用catalina.sh或使用curl命令使用jenkins manager进行部署的问题是,我找不到任何方法来检测成功的部署。
有什么标准方法可以做到
答案 0 :(得分:2)
在tomcat中,有两种部署战争的选择:
这里有一些部署战争并获得部署状态(成功|失败)的方法
您可以在管道的部署阶段放置以下片段之一,或迁移到常规应用。
这是一个端点,它使我们可以将战争从远程主机上传到tomcat服务器并作为响应:
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文件复制到webapp之后,您可以列出已部署的应用,并在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
您可以使用带有中断的循环作为最大尝试。
在这里您可以找到启用此端点所需的配置:
这更干净,而且据我所知,有几个监视平台都在使用这种策略。
所有步骤都包括在您的应用程序(网络应用程序,api rest,守护程序等)中暴露一个额外的http终结点
此端点必须返回以下响应之一:
http stasus
xml或json
{
"status":"200",
"database_connectivity":"200",
"read_write_disk":"200",
"etc":"etc"
}
最后,您可以使用循环从Jenkins管道使用此/ health端点。通过该策略,您可以从以下外部平台监视应用程序:
答案 1 :(得分:0)
在tomcat中,使用jenkins和tomcat进行配置:
更新'apache-tomcat-8.5.5 \ webapps \ manager \ META-INF \ context.xlm文件。取消注释Value标签。并重新启动服务器
context.xml文件
Before :
<Context antiResourceLocking="false" privileged="true">
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="192\.168\.0\.9|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
</Context>
After change :
<Context antiResourceLocking="false" privileged="true" >
</Context>
for auto deployment: go to 'apache-tomcat-8.5.5\conf\context.xml' and add antiResourceLocking="true" in 'Context' tag
答案 2 :(得分:0)