我正在尝试配置 Hudson,以便能够自动将构建(.war 文件)部署到 Tomcat。然后,新部署的构建将被某人用来测试应用程序。

我尝试使用部署插件自动部署 .war 文件,这有效。但是,构建 .war 文件的作业将在每次 scm 更改后(每当提交代码时)运行。使用部署插件,每次构建时都会将 .war 文件部署到 Tomcat。由于代码频繁提交,这意味着 Web 应用程序也会频繁重新启动,这将中断测试过程。

我很欣赏 Hudson 运行我的单元测试并定期进行构建,所以我不想更改这项工作的触发器。

我正在寻找一种可以手动决定从 Hudson 内部部署的方法。我尝试创建一个单独的作业来部署第一个作业中的 .war,但这不起作用。有没有人有设置类似这样的东西的经验?

有帮助吗?

解决方案

神器获得方法

请看“如何回滚或重新部署以前的构建” 在 部署插件页面. 。它描述了基本思想。它使用 复制神器插件 将工件从构建作业复制到当前作业(部署作业)。从那里您可以执行与构建步骤中相同的操作。

如何触发部署

启动部署后无法触发构建作业,因此首先运行构建,然后运行部署作业。所以有几个选择:

  • 手动触发 构建。启动部署的用户需要选择构建作业的特定运行。
  • 预定部署 这可能是夜间任务的一部分。该作业会在一定的时间间隔(例如每天晚上或每个周末)触发。由于它是自动化的,部署作业应该获取最后一次成功的构建(那么您不需要参数化作业)。您没有机会传递运行号码。
  • 部署作业得到 每次构建成功完成时触发 (不符合您的要求,但列出以完成列表)
  • 一些 其他(深奥的)触发器. 。这可以有很多不同的想法,例如通过调用构建 URL 远程触发。该呼叫可以来自您的票务系统、测试实验室管理系统或您喜欢的任何其他系统之一。您还可以通过源代码控制系统中的特定更改来触发部署,例如更改版本号(例如由提交消息中的关键字标记)。该触发器可以在 Hudson 内部或外部实现。还有其他可用的触发器。这包括但不限于 html 页面更改、文件系统受监控部分的更改、IM 消息、电子邮件。前三个是由 Hudson 插件实现的。请查看插件列表,以了解全部可用的内容,或者在这两种情况下,您都需要确保构建工作归档部署所需的所有工件。

其他提示

我每个项目都有几个哈德逊工作:

  1. 主要工作只是构建项目并运行测试。如果成功,它将启动以下作业:
  2. 代码度量作业(PMD、FindBugs、Cobertura、CheckStyle,还有 JavaDoc 生成)和
  3. 使用构建项目的部署作业 mvn package -DskipTests 并部署对tomcat的战争

我发现将这些分开使事情变得更容易,只有第一项工作会侦听 SCM 更改。

然而,另一种方法是让第三个作业也听SCM(但间隔较长,也许一个小时)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top