8

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

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

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

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

4

2 回答 2

7

如何获得神器

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

如何触发部署

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

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

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

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

我发现将这些分开会使事情变得更容易,只有第一个工作会监听 SCM 的变化。

但是,另一种方法是让第三个作业也听 SCM(但间隔更长,可能是一个小时)。

于 2011-01-06T14:05:45.250 回答