Jenkins Remoting is a library, and executable Java archive, which implements the communication layer in Jenkins. This includes the TCP-based communication protocols, remote procedure calls, class loading, data streaming, etc. Currently Remoting is primarily used in communications between the Jenkins controller and Jenkins agents.
The Remoting sub-project includes the Remoting library itself, package for agents, and a number of Remoting-specific plugins and core modules.
Agent executables (
remoting.jar is named
slave.jar in Jenkins)
Controller to Agent communication protocols being used in various Agent types, including inbound (formerly known as “JNLP”) and SSH agents
Communication with Maven instance in the Maven Integration plugin.
Remoting Library is the main component of the sub-project. The code base is located in a separate repository, which also contains Remoting developer and user documentation. This library also has an independent release cycle and LTS release lines.
Although Remoting library is a standalone component, Jenkins core includes some extensions and modules for working with Remoting. Core extensions also allow implementing custom protocols on-demand (e.g. for Jenkins CLI). There is ongoing activity on detaching these core components to Jenkins plugins (see JENKINS-44099), but in the meantime upgrading of Jenkins core may be required to fix Remoting issues.
Jenkins core extensions:
There are several packages which bundle the Remoting library and allow connecting Jenkins agents via one of remoting protocols.