【问题标题】:How to get the current build's node name in jenkins using groovy如何使用groovy在jenkins中获取当前构建的节点名称
【发布时间】:2018-04-06 07:00:10
【问题描述】:

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

我试过下面的代码:

print currentBuild.getBuiltOn().getNodeName()

错误是:

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: unclassified method org.jenkinsci.plugins.workflow.job.WorkflowRun getBuiltOn

我也试过这个:

def build = currentBuild.build()
print build.getExecutor().getOwner().getNode().getNodeName()

但结果是''。

【问题讨论】:

    标签: jenkins groovy jenkins-pipeline


    【解决方案1】:

    有一个环境变量“NODE_NAME”有这个。

    你可以这样访问它:

    echo "NODE_NAME = ${env.NODE_NAME}"
    

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

    【讨论】:

    • 对我来说这打印出NODE_NAME = null。这是管道中的错误吗?
    • 如果管道没有分配节点,你会得到 null - 例如,如果你在声明性管道中有“代理无”。这是在 Jenkins 上使用“flyweight executor”,它没有声明节点或采用 executor - 这里提到:github.com/jenkinsci/pipeline-plugin/blob/master/TUTORIAL.md
    • 这也可能是因为您将该命令放在声明性管道中的 script 块中。如果你想在 script 块内使用它,那么只需 ${NODE_NAME}
    • 一个阶段切换节点怎么办? env.NODE_NAME 不会改变并保持原来的样子。如何获取嵌套节点名称?
    • 在 "stage" 下的 "options" 中使用时为 null,即使 NODE_NAME 在 "sh" 块中可见。
    猜你喜欢
    • 1970-01-01
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多