Jenkins Remoting

Jenkins Remoting 是一个类库,也是一个可执行 Java 归档文件,实现了 Jenkins 中的通讯层。它包括了基于 TCP 的通讯协议、远程过程调用、类加载以及数据流等。目前 Remoting 主要用于 master/agent 之间通信。

Remoting 子项目包括 Remoting 类库本身,代理包以及一系列 Remoting 相关的插件和核心模块。

Jenkins 中的 Remoting 用法

  • 代理可执行文件(在 Jenkins 中 remoting.jar 是一个指定的 agent.jarslave.jar

  • Master 到 代理的通信协议用于各种代理类型,包括 Java Web Start (又叫 JNLP)和 SSH 代理

  • Jenkins CLI, Remoting 模式 从 2.54版本 开始被废弃 (公告)

  • Maven 集成插件 中与 Maven 实例通讯。

项目组件

Remoting 库

Remoting 库是该子项目的主要组件。代码基线在一个 独立仓库,同时包含了 Remoting 开发者和用户文档。该类库也有着独立的发布周期和 LTS 发布线。

链接:

Jenkins 核心与模块

虽然 Remoting 库是一个独立组件,但 Jenkins 核心也有着一些扩展和模块来配合 Remoting 工作。核心扩展也支持按需实现自定义协议(比如针对 Jenkins CLI)。 将这些核心组件分拆为 Jenkins 插件的工作正在进行中(参见 JENKINS-44099),不过与其同时 Jenkins 核心的升级也可能要求修复 Remoting 相关的问题。

Jenkins 核心扩展:

模块:

打包

有多个包绑定了 Remoting 库,支持通过某一个远程协议连接到 Jenkins 代理。

  • Docker Agent: 基础镜像,绑定了 Remoting

  • Docker JNLP Agent: 可用于连接 JNLP 的镜像

  • Jenkins CLI 可执行的(需要在 master 一侧启用 Remoting CLI)

  • Swarm 代理连接器在 Swarm 插件 可执行的

Docker Agent 镜像不久将会迁移到 jenkins 组织 (JENKINS-42846).