【问题标题】:Jenkins fresh deploy works using container deployment plugin, but fails if redeployingJenkins全新部署使用容器部署插件工作,但如果重新部署失败
【发布时间】:2012-02-22 04:39:45
【问题描述】:

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

构建工作正常,但使用容器部署插件似乎不可靠,因为重新部署工作但重新部署应用程序失败。当应用程序已经部署时插件无法部署(战争已经在 webapps 目录中)。需要明确的是,如果我删除了战争并取消部署一切,然后到詹金斯构建它按预期工作,但随后它们失败了。错误信息是:

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

我是否应该将部署作为 maven 构建本身的一部分,使用 deploy:deploy 并添加分发管理部分?

或者我缺少他们的詹金斯设置?

【问题讨论】:

    标签: java maven jenkins tomcat7


    【解决方案1】:

    遇到了同样的问题。令人惊讶的是,在我的情况下,完全其他的事情有所帮助。

    在重新部署时查看了 tomcat 日志,并看到了OutOfMemory: Permgen space。在$CATALINA_HOME/bin/setenv.sh 中将XX:PermSizeXX:MaxPermSize 增加到256m 完全解决了这个问题。

    【讨论】:

      【解决方案2】:

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

      其次,参考this相关openjira问题。这也提出了一个解决方案/解决方法。

      【讨论】:

      • cargo:redeploy 可以很好地将war文件重新部署到远程tomcat7。我已经发布了对我有用的解决方案作为答案。
      • @NimChimpsky。当然,上面的链接表明完全相同。我觉得澄清 Maven 部署也很重要。
      【解决方案3】:

      在部署 war 文件之前,您可以使用它取消部署现有的包。 http://mojo.codehaus.org/tomcat-maven-plugin/undeploy-mojo.html 我认为您可以在进行部署之前将此任务添加到同一个作业中。因此您仍然可以像预期的那样拥有 CI。

      【讨论】:

        【解决方案4】:

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

        必须手动清理 /webapps 并重新启动服务器。现在又可以工作了。

        【讨论】:

          【解决方案5】:

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

          如果我想在 pom 中存储部署详细信息,我可以调用 cargo:redeploy 作为构建后步骤

          或者我调用 cargo:undeploy 作为构建后步骤,然后使用容器部署插件使用我在 jenkins 中放置的设置进行实际部署。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-11-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多