WSO2 Application Server不会通过jenkins post steps shell脚本启动

时间:2013-08-23 12:38:56

标签: shell jenkins wso2

我正在使用jenkins CI来构建我的项目。在构建之后我发布了步骤shell脚本将war复制到WSO2应用服务器/ repository / deployment / server / webapps /文件夹。但我观察到的有时(并非总是),服务器无法重新部署Web应用程序。大多数情况下,使用jenkins复制的新war文件将Web应用程序重新部署到webapps文件夹中。但有时这并没有发生。在这种情况下,唯一的解决方案是停止wso2as服务器,删除web应用程序文件夹,只留下wenapps目录中的新war文件,然后再次启动wso2as服务器。这部署了新的war文件,测试可以继续进行。

但我们需要运行自动化的硒测试。因此,对于要运行的测试,我们需要在每个jenkins构建上可靠地部署新的war文件。

所以我在jenkins post post中编写了一个小脚本,如下所示:

    #!/bin/bash
/home/kk/wso2as-5.0.1/bin/wso2server.sh stop &&
sleep 1m &&
rm -rf /home/kk/wso2as-5.0.1/repository/deployment/server/webapps/Duster_App1* &&
cp /home/kk/.jenkins/workspace/Dusters_App1/target/Duster_App1-${MAVEN_VERSION}.war /home/kk/wso2as-5.0.1/repository/deployment/server/webapps/Duster_App1.war &&
/home/kk/wso2as-5.0.1/bin/wso2server.sh start &&
echo Starting wso2as

此脚本运行。 wso2as服务器停止,webapp文件夹被删除,新的war文件被核心复制到位,我在jenkins控制台输出上得到'Starting wso2as'消息,但是wso2as服务器没有启动。它仍处于停止状态。我在wso2server.sh stop命令之后引入了sleep 1m行,认为服务器可能需要时间关闭,因此在运行wso2server.sh start命令时无法再次启动。但不是。运行启动命令之前服务器干净地停止,因为我已经通过跟踪日志文件以及ps aux命令进行了验证。

那么什么可能阻止服务器再次启动?

2 个答案:

答案 0 :(得分:1)

IMO编写脚本来删除webapp文件夹并不时重启服务器不是一个好主意。我建议您执行以下步骤,然后尝试从jenkins构建服务器部署到AppServer存储库/部署/服务器/ webapps。

1。)停止服务器 2.)打开[AS_HOME] /repository/conf/tomcat/catalina-server.xml配置文件 3.)现在使Host元素中的unpackWARs属性为“false” 4.)重启服务器

默认情况下,AppServer会在webapps中提取WAR文件,并且在一次又一次部署相同的Web应用程序时,这可能会导致间歇性问题。请尝试这种方式,看看。

答案 1 :(得分:0)

WSO2服务器基于OSGI。这些模块还为您可以在管理控制台中执行的所有任务提供Web服务。如果您以./wso2server.sh -DosgiConsole启动服务器,则可以列出与osgi> listAdminServices的所有服务交互。您将找到上传WAR,CAR和AAR档案的界面。上传是一个无状态调用,但是工件上传的处理有点棘手,你还要处理WSO2服务器的自签名证书。您可以使用您选择的脚本语言进行上传,也可以制作一个简单的Jenkins插件并将其集成到您的构建作业中。

如果您想要舒适并且不自己动手,请使用此Jenkins post-build插件通过部署Web服务API将WAR部署到WSO2 AS中:https://github.com/ma-ha/Jenkins-WSO2AS-Deployer