我正在编写一个Groovy脚本来执行Windows服务器的自动重启。在脚本中,我首先使节点脱机,然后检查是否有任何构建,如果没有,则执行重新启动。
我想使用safeRestart()方法,但是它不支持我在循环遍历节点时使用的import语句。我已经看到了execute()方法,该方法基本上在groovy中执行代码的shell行。
如何使用execute()重新启动Windows计算机?
答案 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)
希望有帮助。