目前jenkins构建了我的项目,最后通过jenkins deploy插件将工件部署在远程tomcat上。 问题是,在多次重新部署之后,此过程失败(有时tomcat挂起或(un)部署失败)。在所有情况下停止tomcat和手动取消部署有帮助。
有没有办法在构建/部署之前停止tomcat,删除旧的war和appfolder,并在deploy plugin想要部署工件之前重启tomcat?
事先提前答案 0 :(得分:2)
您可以编写一个批处理文件来完成上述所有操作:
然后,您可以在作业配置中添加新的前/后构建任务作为执行批处理,只需将其指向运行批处理文件。
添加了: 您可以使用PsExec - http://technet.microsoft.com/en-us/sysinternals/bb897553它允许您远程运行进程。将批处理放在远程计算机上,使用Jenkins运行本地程序,如下所示:PsExec.exe \ xx.xx.x.x C:\ MyScript.bat
答案 1 :(得分:1)
接受答案的一个补充: 重新路由PsExec调用的输出和错误输出很重要(花了我2天的调试时间)。见http://jenkins.361315.n4.nabble.com/remotely-executing-commands-td3476417.html
似乎从java调用(如jenkins / tomcat)或.net PsExec挂起或退出时出错。所以电话应该是这样的:
c:\someBatchWithPsExec.bat >>log.txt>&1
或明确地每次通话:
PsExec.exe -u [domain \ remoteuser] -p [密码] / accepteula \ remoteMachine net [停止|开始] Tomcat7>> log.txt>& 1
我想如果jenkins运行域\用户你不必在命令中提及它?! (只是尝试过但它没有用 - 网络命令失败)