Jenkins全新部署使用容器部署插件,但如果重新部署则失败

时间:2012-01-30 11:15:25

标签: java maven jenkins tomcat7

我想设置我的maven构建的网络应用程序,以构建和部署作为我日常工作的一部分。

构建工作正常,但是使用容器部署插件似乎不可靠,因为全新部署有效,但重新部署应用程序失败。当已经部署应用程序时,该插件无法部署(战争已经在webapps目录中)。要清楚的是,如果我删除war和取消部署everthing然后到jenkins构建它按预期工作但随后它们失败。错误消息是:

org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: FAIL - Encountered exception javax.management.RuntimeErrorException: Error invoking method check

我应该使用deploy:deploy和添加分发管理部分来部署作为maven构建本身的一部分吗?

或者他们是一个我失踪的jenkins设置?

5 个答案:

答案 0 :(得分:4)

只是同样的问题。令人惊讶的是,在我的案例中完全有其他事情有所帮助。

在重新部署时查看tomcat日志,并看到OutOfMemory: Permgen space。在XX:PermSize中将XX:MaxPermSize$CATALINA_HOME/bin/setenv.sh增加到256米可以完全解决此问题。

答案 1 :(得分:1)

首先,maven deploy plugin不会将Web应用程序部署到容器。它将项目工件部署到maven存储库。因此,它不能用于您的目的。

其次,请参阅this相关的open jira问题。这也提出了解决方案/解决方法。

答案 2 :(得分:1)

在部署war文件之前,您可以使用此方法取消部署现有的包。 http://mojo.codehaus.org/tomcat-maven-plugin/undeploy-mojo.html 我认为您可以在部署之前在同一作业中添加此任务。因此您仍然可以按照预期使用CI。

答案 3 :(得分:1)

如果您尝试在context.xml中部署具有相同上下文根的2个应用程序(但在部署时在jenkins中定义了另一个应用程序),也可能会发生。

必须手动清理/ webapps并重启服务器。现在再次工作。

答案 4 :(得分:0)

我这样做https://stackoverflow.com/a/6524012/106261

我可以调用货物:如果我想在pom中存储部署详细信息,则重新部署为后期构建步骤

或者我称之为货物:取消部署作为后期构建步骤,然后使用容器部署插件使用我在jenkins中设置的实际部署。