如何解决如何保持Jenkins multiJob执行,直到选定的节点空闲为止?
我对詹金斯(Jenkins)多种工作的可能性有疑问:
当前状态:
- 我有8个Jenkins节点用于执行作业,有2个Linux和6个Windows。
- 我设置了Multijob,由3个子职位组成。
- MultiJob设置:仅在Linux节点上运行具有限制
- SubJob设置:n1只能在Win节点1上运行,n2只能在Win节点2上运行,n3只能在Win节点3上运行
期望的状态:
- 构建multiJob时,我需要它检查并等待Win节点1,2,3空闲
- 我需要同时执行1,3个子任务
这不是问题,如果所有节点都空闲...但是,如果这三个节点中的至少一个正在运行其他作业,这已经是一个问题,因为与之相比,一个subJob会比较晚另外两个
只有在所有三个选定节点都空闲/等待它们空闲时,有没有办法设置一些预构建脚本/另一种方式来运行subJobs?
非常感谢所有想法:)
解决方法
您可以在特定节点上检查构建执行程序的状态,作为构建前的操作。 如果构建执行器处于空闲状态,则意味着没有作业在运行,但是如果繁忙,则说明正在运行某些内容。 简单的常规脚本可以用于此目的。
import hudson.model.Node
import hudson.model.Slave
import jenkins.model.Jenkins
Jenkins jenkins = Jenkins.instance
def jenkinsNodes =jenkins.nodes
for (Node node in jenkinsNodes)
{
// Make sure slave is online
if (!node.getComputer().isOffline())
{
//Make sure that the slave busy executor number is 0.
if(node.getComputer().countBusy()==0)
{
...put your logic...
}
}
}
谢谢, 超自然
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。