如何使用groovy在jenkins中获取当前构建的节点名称

nan*_*nci 9 groovy jenkins jenkins-pipeline

我有一个在Jenkins运行的管道作业,我想知道它正在运行的节点的名称.有没有办法从作业的Groovy脚本中获取节点名称?

我试过以下代码:

print currentBuild.getBuiltOn().getNodeName()
Run Code Online (Sandbox Code Playgroud)

错误是:

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: unclassified method org.jenkinsci.plugins.workflow.job.WorkflowRun getBuiltOn
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

def build = currentBuild.build()
print build.getExecutor().getOwner().getNode().getNodeName()
Run Code Online (Sandbox Code Playgroud)

但结果是''.

mac*_*3zr 19

有一个环境变量'NODE_NAME'就是这个.

您可以像这样访问它:

echo "NODE_NAME = ${env.NODE_NAME}"
Run Code Online (Sandbox Code Playgroud)

在编辑管道作业时,您可以通过转到"管道语法"帮助链接(页面左侧)找到所有可用的环境变量,然后查找"全局变量"部分并单击"全局变量参考" .有一个"env"部分列出了可用的环境变量.

  • 如果在阶段中切换节点怎么办?`env.NODE_NAME` 不会改变并保持原来的样子。如何获取嵌套节点名称? (4认同)
  • 对我来说,这会打印“NODE_NAME = null”。这是管道中的错误吗? (3认同)