配置Hudson以部署构建

时间:2011-01-06 13:41:35

标签: tomcat continuous-integration hudson continuous-deployment

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

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

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

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

2 个答案:

答案 0 :(得分:7)

如何获取工件

查看Deploy Plugin Page上的“如何回滚或重新部署以前版本”部分。它描述了基本思想。它使用Copy Artifact Plugin将构建作业中的工件复制到当前作业(部署作业)。从那里开始,你就像在构建步骤中那样做了。

如何触发部署

启动部署后,无法触发构建作业,以便首先运行构建,而不是部署作业。所以有几个选择:

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

答案 1 :(得分:1)

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

  1. 只是构建项目并运行测试的主要工作。如果成功,它将启动以下工作:
  2. 代码指标作业(PMD,FindBugs,Cobertura,CheckStyle,也是JavaDoc代)和
  3. 使用mvn package -DskipTests构建项目并在tomcat上部署战争的部署作业
  4. 我发现将这些事情分开会更容易,只有第一份工作会听取SCM的变化。

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