2013-08-23 35 views
0

我正在使用jenkins CI來構建我的項目。構建完成後,我已經發布了步驟,將shell腳本複製到WSO2應用程序服務器/ repository/deployment/server/webapps /文件夾。但是我觀察到有時(並非總是),服務器無法重新部署Web應用程序。大多數情況下,Web應用程序將使用jenkins複製的新war文件重新部署到webapps文件夾中。但有時候這並沒有發生。在這種情況下,唯一的解決方案是停止wso2as服務器,刪除web應用程序文件夾,只留下wenapps目錄中的新war文件並再次啓動wso2as服務器。這部署了新的戰爭文件,測試可以繼續進行。WSO2應用服務器不會通過jenkins啓動後步驟shell腳本

但是我們需要運行自動硒測試。因此爲了測試運行,我們需要在每個jenkins版本上可靠地部署新的war文件。

所以我寫在詹金斯一小腳本後工序象下面這樣:

#!/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命令之後引入了睡眠1m行,認爲服務器可能需要時間關閉,因此在運行wso2server.sh start命令時無法再次啓動。但不是。在啓動命令運行之前,服務器將被徹底停止,因爲我已通過跟隨日誌文件以及ps aux命令進行了驗證。

那麼,可能會阻止服務器再次啓動?

回答

1

國際海事組織撰寫腳本刪除webapp文件夾,並不時重新啓動服務器不是一個好主意。我建議你做下面的步驟,然後嘗試從你的jenkins構建服務器到AppServer repository/deployment/server/webapps的部署。

1)停止服務器 2)打開[AS_HOME] /repository/conf/tomcat/catalina-server.xml配置文件 3.)現在使unpackWARs在主機元素屬性「假」 4 。)重新啓動服務器

默認情況下,AppServer會在Web應用程序內部提取WAR文件,並且可能會一次又一次部署相同的Web應用程序時導致間歇性問題。請嘗試這種方式,看看。

+0

感謝您的輸入。已在[AS_HOME] /repository/conf/tomcat/catalina-server.xml中進行了更改以不解壓戰爭;並在我的詹金斯腳本中複製戰爭文件。 如果這項工作一致並更新,將會觀察一段時間。 – kmkale

+0

這或多或少有效。但有時web應用程序無法部署錯誤,如重複的名稱等仍然在錯誤的列表中。在這種情況下,必須停止服務器,刪除戰爭,重新啓動服務器,並將戰爭從maven build複製到webapps文件夾。 – kmkale

0

WSO2服務器基於OSGI。這些模塊還爲您可以在管理控制檯中執行的所有任務提供Web服務。如果您啓動服務器爲./wso2server.sh -DosgiConsole,並且您可以列出與osgi> listAdminServices的所有服務交互。您會發現即可上傳WAR,CAR和AAR存檔的界面。上傳是一個無狀態的調用,但處理工件上傳有點棘手,您還需要處理WSO2服務器的自簽名證書。您可以使用您選擇的腳本語言進行上傳,或製作一個簡單的Jenkins插件並將其集成到您的構建作業中。

如果你想要的舒適性和不自己做,用這個詹金斯生成後插件部署WAR到WSO2 AS通過部署Web服務API:https://github.com/ma-ha/Jenkins-WSO2AS-Deployer

相關問題