配置Hudson以部署构建

8
我正在尝试配置Hudson,以便能够自动将构建(一个.war文件)部署到Tomcat。新部署的构建将由某人用于测试应用程序。
我尝试使用Deploy插件自动部署.war文件,并且这个方法可行。但是,生成.war文件的作业将在每次scm更改(提交代码时)后运行。使用Deploy插件,.war文件将在每次构建时部署到Tomcat。由于代码经常提交,这将意味着Web应用程序也会频繁重新启动,这将打断测试过程。
我很感激Hudson定期运行我的单元测试并进行构建,因此我不想更改此作业的触发器。
我正在寻找一种方法,在Hudson内手动决定部署。我尝试创建一个单独的作业来从第一个作业部署.war,但是这并没有起作用。有人有类似设置的经验吗?
2个回答

7

如何获取构件

请查看部署插件页面中的“如何回滚或重新部署以前的构建”部分。它描述了基本思想。它使用Copy Artifact插件将构件从构建作业复制到当前作业(部署作业)。然后您可以像在构建步骤中所做的那样操作。

如何触发部署

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

  • 手动触发构建。启动部署的用户需要选择特定的构建作业运行。
  • 定时部署。这可以是夜间任务的一部分。作业以一定的时间间隔(如每晚或每周末)触发。由于是自动化的,部署作业应该选择最后一个成功的构建(然后您不需要参数化作业)。您没有机会传递运行编号。
  • 部署作业在每次构建成功完成后触发(不符合您的要求,但列出以完成列表)。
  • 一些其他(奇特的)触发器。这可以是许多不同的事情,例如通过调用构建URL远程触发。调用可以来自您的票务系统、测试实验室管理系统或任何其他您喜欢的系统。您还可以通过源代码控制系统中的特定更改来触发部署,例如更改发布号码(例如在提交消息中标记的关键字)。此触发器可以在Hudson内部或外部实现。还有其他可用的触发器。这包括但不限于HTML页面更改、文件系统监视部分更改、即时消息和电子邮件。前三个由Hudson插件实现。请查看插件列表,了解所有可用内容。

谢谢。虽然我花了一些时间才找到正确的工件路径进行复制,但最终成功解决了问题。 - user565469

1

我有几个项目的Hudson作业:

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

我发现将它们分开使事情变得更容易,只有第一个作业监听SCM更改。

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


他不想知道哪些工作是好的创建。他的问题是,他不知道如何将构建作业的工件传递到部署作业。 - Peter Schuetze
这个解决方案基本上会创建两次相同的构建。我曾考虑过这个解决方案,但我认为肯定有更好的方法。Peter的解决方案对我很有效。 - user565469

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接