在Jenkins中,执行Groovy脚本和执行系统Groovy脚本有何区别?

20

请问有人能解释一下Jenkins中execute groovy script和execute system groovy script的区别吗?以及如何使用execute system groovy script调用脚本到从属节点上。

2个回答

13
要在从属机器上执行 groovy 脚本,您应该使用 Groovy 插件
引用
“Groovy 脚本”在从属机器上的分叉 JVM 中运行。这基本上就像运行 “groovy” 命令并传递脚本一样。
您问题的第一部分在同一页中得到了回答。
系统 groovy 脚本则在 Hudson 主服务器的 JVM 中运行。因此,它将具有访问 Hudson 的所有内部对象的权限,因此您可以使用它来更改 Hudson 的状态。它类似于 Jenkins 脚本控制台功能。

1
那么什么是“系统Groovy脚本”?我的项目管道脚本是系统脚本吗? - SerG

1

关于系统Groovy脚本,还有一个需要注意的地方。虽然文档说它总是在Jenkins主节点上运行,但我通过痛苦的方式发现,如果它在由另一个任务触发的作业中,则不是这样。在这种情况下,请确保明确限制其在主节点上运行,否则会发生糟糕的事情。


1
这个回答并不完全正确。System Groovy脚本用于访问Jenkins内部(例如Job/Build/Queue信息),因此脚本本身在Jenkins主服务器上运行,在Jenkins主服务器JVM中运行,而不管作业本身在哪个从服务器上运行。例如,我们的Jenkins主服务器没有执行器,也从不运行构建。它们总是在从服务器上运行,但是System Groovy脚本仍然在主服务器JVM上运行。 - Nick Holt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接