【问题标题】:How to undeploy a .war with Jenkins?如何取消部署与 Jenkins 的 .war?
【发布时间】:2018-04-22 06:57:26
【问题描述】:

我们正在处理 Selenium 网格设置。 我们是这样做的: 我们得到了 2x Jenkins Jobs 和 2x Tomcats。 我们正在使用 Maven!

  1. 第一个 Jenkins 作业在 tomcat 上部署应用程序(用于测试)。该作业有一个发布操作,其中触发了第二个作业。 (当然是忽略测试)
  2. 第二个 Jenkins 作业测试部署在第一个 Tomcat 上的应用程序,如果成功,它将在第二个也是最后一个 Tomcat 上部署应用程序。

现在我们需要在第一个 Tomcat 上取消部署该应用程序(如果它部署在第二个 Tomcat 上)。

是否有任何选项可以将此集成到第二个 Jenkins Job 中?

如果您能给我一些建议,那就太好了。

谢谢 -T

【问题讨论】:

  • 你为什么使用 2 个 jenkins 工作?你可以只用一份工作做同样的事情。你如何部署 web 应用程序?是否部署在执行 jenkins 的同一台机器上?
  • 您好 Davide,感谢您的回答。怎么可能只在一份工作中完成所有这些工作?我们开始设置我们的 Selenium 设置。目前我们运行 2 个不同的虚拟机。 1. Tomcat 用于测试部署 2. Selenium Grid Hub + Node、Jenkins 和 Tomcat 用于最终部署。
  • fwiw 我认为将其分开是有意义的。如果一项工作做得太多,你可能会有一些非常脆弱的东西,而且很难配置。现在我不完全确定您所说的取消部署是什么意思...您可以停止 tomcat,但是您是否还想出于某种原因删除文件?您可以有一个运行脚本来清理文件的步骤,但我并不完全理解这些要求的必要性。

标签: maven selenium tomcat jenkins automated-tests


【解决方案1】:

通常,以自动化方式在 Tomcat 上部署和取消部署的方法是使用 Maven Tomcat plugin。忽略它似乎只适用于 Tomcat 版本 7 的事实 - 它适用于 7+ 版本。

在幕后,这个插件使用了Tomcat manager REST API

您的 Jenkins 命令可能如下所示:

  1. mvn tomcat7:deploy 在第一台服务器上
  2. 如果部署和启动成功,您将收到类似于以下内容的可验证响应:“OK - Deployed application at context path /foo”(可能是相关错误代码)
    • 您还可以编写 curl 和解析命令 对于http://localhost:8080/manager/text/list 的经理命令 检查应用程序是否部署为健全性检查
  3. 如果已部署
    • 在第二台服务器上执行mvn tomcat7:deploy
    • 打开mvn tomcat7:undeploy 第一台服务器。

所有信息都在这里,这个插件的基本 maven 配置是:

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <url>http://localhost:8080/manager/text</url>
        <server>TomcatServer</server>
        <path>/myAppContextPath</path>
        <username>admin</username>
        <password>admin</password>
    </configuration>
</plugin>

【讨论】:

    猜你喜欢
    • 2016-04-29
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多