Jenkins—运行单个作业同时寻址两个节点—或在两个作业之间进行双向通信
Jenkins是新手,但有其他构建服务器的经验 我正在设置一个测试作业,其中两个节点上的软件需要相互乒乓。 我有一个标记节点池(让我们称它们为a,运行windows 7)来运行测试软件,还有一个标记节点池(让我们称它们为B,运行lubuntu 14.10) 测试是通过TCP/IP执行的,在整个测试过程中,A和B节点都需要各种命令行刺激。最后,我需要从A和B节点收集工件 我想同时控制多个节点的需求并不罕见,但我真的很难在web上找到这些信息。Jenkins—运行单个作业同时寻址两个节点—或在两个作业之间进行双向通信,jenkins,jenkins-plugins,Jenkins,Jenkins Plugins,Jenkins是新手,但有其他构建服务器的经验 我正在设置一个测试作业,其中两个节点上的软件需要相互乒乓。 我有一个标记节点池(让我们称它们为a,运行windows 7)来运行测试软件,还有一个标记节点池(让我们称它们为B,运行lubuntu 14.10) 测试是通过TCP/IP执行的,在整个测试过程中,A和B节点都需要各种命令行刺激。最后,我需要从A和B节点收集工件 我想同时控制多个节点的需求并不罕见,但我真的很难在web上找到这些信息。 有没有我错过的插件 下面是我的想法什么需要执行,如果
有没有我错过的插件
下面是我的想法什么需要执行,如果一个插件不存在,以帮助我 我的首选解决方案是单一工作,但我需要了解如何执行以下操作:
另一种完全不同的选择是设置两个作业,一个用于节点A,另一个用于节点B。但接下来我需要了解如何执行以下操作:
热切期待您的回答 在我们使用的类似场景中,我们有两个作业(我不知道在两个节点上运行单个作业的方法)。
作业A在节点A上运行,并设置服务器,然后触发作业B,该作业设置为在节点B上运行(作为构建步骤)。
作业B将启动其客户端应用程序,该应用程序配置为与A安装的服务器一起工作(在我的情况下是IP配置)。
作业A(服务器)进入等待循环(使用bash while),检查运行在B上的客户端是否已连接(我使用共享位置中的标志文件) 一旦连接,这两个作业将执行更多步骤并完成。每个作业都将以自己的报告结束 我希望这有帮助。在我的例子中,我使用了带有从属轴的project。然后,您可以使用自己的代码在节点之间同步执行,或者将其与(系统)混合以在不同配置之间通信 即
如何从作业A触发作业B?我找到了我想可以做到的东西。是的。这是我使用的插件。适用于许多场景。很好。当我回到那个项目时,我会调查这件事。谢谢分享。
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)
}
}
}
}
}