2012-07-19 126 views
6

我试图建立一个Jenkins系统,其中某个程序必须在网络板上运行,使用telnet访问。我们在这里谈论数百个这样的工作,因此我们将设立多个委员会。因此,每个工作都必须分配一个董事会,但问题是只有一个职位可以同时拥有某个董事会,否则该计划将失败。Jenkins - 管理资源池

我现在使用的解决方案是使用主从设置,使用SSH连接到同一台计算机(因此同一台计算机上有主设备和多台从设备)。每个从节点都有一个标签供程序必须telnet到的IP地址。这可以工作,明智的调度,但它可能会导致问题,因为所有节点使用SSH连接到同一台机器。使用SSH连接到电路板不是一种选择。

有什么办法可以获得与上面相同的功能,但是不使用SSH连接到同一台机器上?所以基本上我想能够说:我们有n台可用的机器,当一个工作进来时,给它一台这样的机器,并把它传给一台属于那台机器的标签(在这种情况下它的IP地址)。现在剩下n-1台机器了。 相互排斥靠得很近,但不允许上述功能,等待资源的作业占用节点的一个执行者。

非常感谢!

+0

与此类似:http://stackoverflow.com/questions/10950439/resource-mange-external-nodes-in-jenkins-for-tests – 2012-07-19 16:40:44

回答

0

也许你应该看看Lock和Latches Plugin。你可以用这个插件锁定一个资源,只需要作业来锁定你想要的电路板。

https://wiki.jenkins-ci.org/display/JENKINS/Locks+and+Latches+plugin

+1

感谢您的回复。 虽然我认为这不会起作用,主要是因为我想让詹金斯动态地将作业分配到电路板上,所以当有节点可用时将作业分配给节点。我相信这个插件没有这样的事情,要求你事先指定它应该在哪个板上运行。 – 2012-07-19 22:45:37

4

我明白你的问题可能已经解决了几年前,但如果有人在寻找答案,并运行到这一点。

您可以使用“可锁定资源”插件,并将IP地址设置为资源的名称,并使用标签,例如test-board-ip.It使用简单易用。

另一种可能性是使用“外部资源调度程序”插件。它提供了更多的可能性,但它有一个导致它有时挂起的错误。而且似乎没有更多的维护(从2013年的最新更新)。