我正在设置测试作业,两个节点上的软件需要相互打乒乓。 我有一个标记节点池(让我们称之为A,运行Windows 7)来运行测试软件和另一个标记节点池(让我们称之为B,运行lubuntu 14.10)。
测试通过TCP / IP执行,并且在整个测试过程中需要A和B节点上的各种命令行激励。最后,我需要从A和B节点收集工件。
我认为同时控制多个节点的要求和需求并不是那么罕见,但我真的很难在网上找到这方面的信息。
可能有一个我错过的插件吗?
以下是我对需要做什么的想法,如果没有一个插件可以帮助我。
我首选的解决方案是单一工作,但后来我需要了解如何执行以下操作:
上述所有偶数项目的替代方案可能是使用来自主节点或A节点的SSH来控制B节点执行这些操作,但这留下了以下问题:
一个完全不同的替代方案可能是设置两个作业,一个用于节点A,一个用于节点B' s。但后来我需要了解如何执行以下操作:
热切期待你的回答!
答案 0 :(得分:0)
在我们使用的类似场景中,我们有两个作业(我不知道在两个节点上运行单个作业的方法)。
作业 A 在节点 A 上运行并设置服务器,然后触发作业 B ,该作业设置为在节点 B <上运行/ strong>(作为构建步骤)。
作业 B 将启动其客户端应用程序,该应用程序配置为与 A (在我的情况下为IP配置)安装的服务器一起使用。
作业 A (服务器)进入等待循环(使用bash while),检查 B 上运行的客户端是否已连接(我在共享位置使用标记文件)
连接后,两个作业都会执行更多步骤并完成。每项工作都将以自己的报告结束。
我希望这会有所帮助。
答案 1 :(得分:0)
在我的情况下,我使用了Multi-configuration项目与Slave轴。然后,您可以使用自己的代码在节点之间同步执行,或者将其与(系统)Groovy script混合以在不同配置之间进行通信。
即。
def siblings = []
build.getParentBuild().getExactRuns().each { run ->
if (!build.is(run)) {
if (run.hasntStartedYet()) {
println "Build " + name + " hasn't started yet!"
} else {
if (!run.isBuilding()) {
println "Build " + name + " has already completed!"
break
}
executor = run.getExecutor()
if (executor) {
hostname = executor.getOwner().getHostName()
// In case hostname could not be found explicitly,
// then set it based on node's name.
if (!hostname) hostname = executor.getOwner().getName()
if (hostname) {
siblings.add(hostname)
}
}
}
}
}