Jenkins 新部署可以使用容器部署插件进行工作,但如果重新部署则会失败

发布于 2025-01-01 09:17:49 字数 475 浏览 0 评论 0原文

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

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

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

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

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

I want to set up my maven built web app, to build and deploy as part of my regular job.

The build works fine, however using the container deployment plugin seems unreliable in that a fresh deployment works but redeploying the app fails. The plugin can not deploy when app is already deployed (the war is already in webapps directory). To be clear if I delete the war's and undeploy everthing and then to a jenkins build it works as expected but then subsequently they fail. The error message is :

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

Should I instead be deploying as part of the maven build itself, using deploy:deploy and adding a distribution management section ?

Or is their a jenkins setting i am missing ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

谁人与我共长歌 2025-01-08 09:17:49

有同样的问题。令人惊讶的是,完全其他的事情对我的情况有帮助。

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

Had just the same issue. Surprisingly, completely other things helped in my case.

Looked at tomcat logs at redeploy time, and saw OutOfMemory: Permgen space. Increasing XX:PermSize and XX:MaxPermSize to 256m in $CATALINA_HOME/bin/setenv.sh solved this issue completely.

沒落の蓅哖 2025-01-08 09:17:49

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

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

Firstly, maven deploy plugin does not deploy a web application to a container. It deploys the project artifact to a maven repository. So, it cannot be used for your purpose.

Secondly, refer to this related open jira issue. This also suggests a solution/workaround.

北方。的韩爷 2025-01-08 09:17:49

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

before you deploy the war file you can undeploy the existing package by using this.
http://mojo.codehaus.org/tomcat-maven-plugin/undeploy-mojo.html
I think you can add this task in the same job before you do the deployment.So you can still have CI as you are expecting.

浸婚纱 2025-01-08 09:17:49

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

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

Might also happen if you try to deploy 2 apps with the same context root in context.xml (but another defined in jenkins when deploying).

Had to manually clean /webapps and restart the server. Works again now.

初心 2025-01-08 09:17:49

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

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

或者我将 Cargo:undeploy 称为构建后步骤,然后使用容器部署插件使用我输入的设置进行实际部署詹金斯。

I am doing this https://stackoverflow.com/a/6524012/106261

I can either call cargo:redeploy as a post build step if I want to have deployment detail stored within pom

Or I call cargo:undeploy as a post build step, then use container deploy plugin to actually deploy using the settings I put in jenkins.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文