目前,我们有一个maven项目,有几千个测试需要两个小时才能运行。我们尝试并行运行这些,但由于它们是功能测试,因此每个测试都以特定方式配置系统,这会导致竞争条件和随机测试失败。我想要做的是在AWS上启动N个服务器,然后让maven划分我的测试并在这些服务器上运行它们(每个服务器将按顺序运行其测试,但所有服务器将并行运行),然后聚合结果。是否有任何插件可以做这样的事情?我已经看到了一些接近我希望在Jenkins中实现的东西,但是我更喜欢它被maven驱动,所以开发人员可以在没有安装Jenkins的情况下在本地使用它。
答案 0 :(得分:0)
我不知道任何完全开箱即用的插件,但我相信这项工作可以完成。
我发现自己在分割工作时使用了一个迭代器插件。请参阅此处的示例:http://khmarbaise.github.io/iterator-maven-plugin/
要进行实际的上传和执行,一个建议可能是使用ant插件来scp项目,然后使用sshexec来执行它。
<build>
...
<plugins>
...
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<configuration>
<tasks>
<scp todir="${scp.user}:${scp.password}@${scp.host}:/${scp.dirCopyTo}" trust="true" failonerror="false">
<fileset dir="${bundle.dir}" />
</scp>
<sshexec host="${scp.host}"
username="${scp.user}"
keyfile="${user.home}/.ssh/id_dsa"
command="touch somefile"/>
</tasks>
</configuration>
<dependencies>
<dependency>
<groupId>ant</groupId>
<artifactId>ant-jsch</artifactId>
<version>1.6.5</version>
</dependency>
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.42</version>
</dependency>
</dependencies>
</plugin>
...