2012-02-25 75 views
2

我们将使用Hudson/Jenkins构建服务器来构建我们的服务器应用程序(只需调用maven)并针对它运行集成测试。我们将准备3 Hudson/Jenkins作业:用于构建,部署和运行集成测试,它们按此顺序互相调用。所有这些工作(构建,部署,集成测试)将每晚进行。使用JUnit,Maven和Hudson/Jenkins进行集成测试

集成测试用JUnit编写,并由mvn test(将依次由“test”Hudson/Jenkins作业调用)调用。由于他们需要服务器启动并运行,我们必须运行该“部署”作业。

它有道理吗?是否有任何特殊的服务器部署应用程序和运行测试或Hudson/Jenkins可以吗?

+0

你为什么要使用三种不同的工作?你使用什么样的服务器? (什么样的应用程序?) – khmarbaise 2012-02-25 14:34:45

回答

6

它绝对有意义,基本上你是指一个构建管道。有一个Jenkins-plugin帮助可视化上游/下游项目(您在jenkins中创建新的管道视图)。

至于服务器组件的部署,这取决于你在哪个技术/堆栈上运行。例如,你可以编写一个脚本,在jenkins中使用后期构建步骤将应用程序部署到测试环境。

另一种选择是使用maven插件来部署应用程序。您可以将配置文件中的部署步骤分开,并在部署步骤中仅运行部署目标。

基本上有很多选项,但构建管道的想法很有意义。要阅读构建管道和相关主题,我建议看看Continuous Deployment

有关詹金斯的更多信息,看看this video

它有道理吗?是否有任何特殊的服务器部署 应用程序和运行测试或哈德森/詹金斯可以吗?

您可以在jenkins所在的同一台服务器上运行应用程序,但是有意义取决于应用程序。如果它很大程度上取决于特定的服务器设置,则更好的选择可能是在vm中运行服务器,而在源代码控制中运行配置。有大量的工具来帮助自动化这个,我的头已根据您的服务器的技术PuppetChefVagrant

2

,你可以做到这一切在一个单一的哈德逊项目的顶部,执行你的集成使用Maven的Failsafe plugin而不是Surefire进行测试。

这使您可以在执行集成测试之前启动和部署,并在完成后关闭服务器。它还允许您将集成测试与单元测试分开。

对于Java EE应用程序,您可以使用Cargo执行启动/部署/停止步骤,也可以使用嵌入式Jetty和Jetty Maven plugin

相关问题