Launching Jenkins Inbound Agents with Java

Article ID:360055603052
2 minute readKnowledge base

Issue

  • I would like to launch inbound agents to connect to a Jenkins controller

  • When launching inbound agents, the launch fails with arguments passing errors such as "<option>" is not a valid option, "<option>" is required or option "<option1>" cannot be used with the option(s) <list of options>

Resolution

There are mainly 2 recommended ways of starting an inbound agent with Java, and depending on the approach chosen, different options and arguments can be used:

  • The more common and simplistic approach is by downloading a JNLP file and using the Launcher, typically: java -jar agent.jar -jnlpUrl <jnlpUrl> ....

  • The raw approach, by executing the Remoting Main entrypoint, typically: java -cp agent.jar hudson.remoting.jnlp.Main -headless ...

There is no recommendation whether to use one or another. The raw approach allow more fine-grained configuration.

Launcher / JNLP File

The most common way, that is also advertised in the Node page, is by using the remoting Launcher and pass the URL of the JNLP File:

java -jar agent.jar -jnlpUrl "${JENKINS_URL}"/computer/"${AGENT_NAME}"/jenkins-agent.jnlp ....

This command retrieve the jenkins-agent.jnlp file at "${JENKINS_URL}"/computer/"${AGENT_NAME}"/jenkins-agent.jnlp via HTTP/S. It is an XML file and can be read with cat or a text editor. That file contains the options and arguments that will be passed to the hudson.remoting.jnlp.Main class of remoting to start the agent (like the raw approach does).

Use java -jar agent.jar -help to see the options.

Raw approach with hudson.remoting.jnlp.Main

Another way, not advertised in the Node page, is to add agent.jar to the CLASSPATH and execute the hudson.remoting.jnlp.Main directly:

java -cp agent.jar hudson.remoting.jnlp.Main ...

This method is a raw command to which you need to provide all necessary arguments. This is the method used in the Inbound Agent images such as jenkins/inbound-agent and cloudbees/cloudbees-core-agent to launch the agent.

Use java -cp agent.jar hudson.remoting.jnlp.Main -help to see the options.

This article is part of our Knowledge Base and is provided for guidance-based purposes only. The solutions or workarounds described here are not officially supported by CloudBees and may not be applicable in all environments. Use at your own discretion, and test changes in a safe environment before applying them to production systems.