如何在Groovy中使用Shell重新启动Jenkins节点

时间:2019-07-27 22:51:39

标签: jenkins groovy jenkins-groovy

我正在编写一个Groovy脚本来执行Windows服务器的自动重启。在脚本中,我首先使节点脱机,然后检查是否有任何构建,如果没有,则执行重新启动。

我想使用safeRestart()方法,但是它不支持我在循环遍历节点时使用的import语句。我已经看到了execute()方法,该方法基本上在groovy中执行代码的shell行。

如何使用execute()重新启动Windows计算机?

1 个答案:

答案 0 :(得分:1)

不确定这是否可以直接回答您的问题,但会指出正确的方向...

您可以利用以下S / O问题:Run a remote command on all Jenkins slaves via Masters's script console或要点:run_command_on_all_slaves.groovy

顺便说一句:Jenkins API似乎支持在服务器(script directly)上运行Computer

您的实际命令应为shutdown /r`

除非节点在线,否则我不相信您可以这样做。断开节点的连接会停止Jenkins从属进程,因此该节点上没有任何运行,因此不确定要拥有什么控件。相反,您想阻止队列并让现有作业完成:

Jenkins.instance.getNode('Node-Name').toComputer().setAcceptingTasks(false)

并检查:

Jenkins.instance.getNode('Node-Name').toComputer().countBusy() == 0

然后运行(在服务器上工作)重新启动命令

当服务器再次可用时,启动节点并打开队列。

Jenkins.instance.getNode('Node-Name').getComputer().launch()
Jenkins.instance.getNode('Node-Name').getComputer().setAcceptingTasks(true)

希望有帮助。