Search code examples
jenkinsgroovyjenkins-pipeline

How to get the current build's node name in jenkins using groovy


I have a pipeline job running in Jenkins and I want to know the name of the node it's running on. Is there a way to get the node name from within the job's Groovy script?

I have tried the below code:

print currentBuild.getBuiltOn().getNodeName()

the error is:

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

I also tried this:

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

but the result is ''.


Solution

  • There is an environment variable 'NODE_NAME' which has this.

    You can access it like this:

    echo "NODE_NAME = ${env.NODE_NAME}"
    

    When you are editing a pipeline job, you can find all the available environment variables by going to the "pipeline syntax" help link (left of page) then look for the "Global Variables" section and click through to the "Global Variables Reference". There is a section "env" that lists the environment variables available.