Jenkins Remoting 是一个类库,也是一个可执行 Java 归档文件,实现了 Jenkins 中的通讯层。它包括了基于 TCP 的通讯协议、远程过程调用、类加载以及数据流等。目前 Remoting 主要用于 master/agent 之间通信。
Remoting 子项目包括 Remoting 类库本身,代理包以及一系列 Remoting 相关的插件和核心模块。
代理可执行文件(在 Jenkins 中remoting.jar
是一个指定的agent.jar
或slave.jar
)
Master 到 代理的通信协议用于各种代理类型,包括 Java Web Start (又叫 JNLP)和SSH代理
Jenkins CLI,远程模式从 2.54版本 开始被废弃(公告)
在Maven 集成插件中与 Maven 实例通讯。
Remoting 库是该子项目的主要组件。代码基线在一个独立仓库,同时包含了 Remoting 开发者和用户文档。该类库也有着独立的发布周期和 LTS 发布线。
链接:
疑难问题排除(建设中)
虽然 Remoting 库是一个独立组件,但 Jenkins 核心也有着一些扩展和模块来配合 Remoting 工作。核心扩展也支持按需实现自定义协议(比如针对 Jenkins CLI)。 将这些核心组件分拆为 Jenkins 插件的工作正在进行中(参见JENKINS-44099),不过与其同时 Jenkins 核心的升级也可能要求修复 Remoting 相关的问题。
Jenkins 核心扩展:
Agent 协议- 协议实现
JNLP Agent 接收器- 接收连入请求
模块:
Agent Installer 模块- Remoting 代理安装的通用 API
Windows Agent Installer 模块- 提供把 Jenkins 代理安装为 Windows 服务的逻辑,参考链接WinSW 项目
等等。
有多个包绑定了 Remoting 库,支持通过某一个远程协议连接到 Jenkins 代理。
Docker Agent: 基础镜像,绑定了 Remoting
Docker JNLP Agent: 可用于连接 JNLP 的镜像
Jenkins CLI 可执行的(需要在 master 一侧启用 Remoting CLI)
Swarm 代理连接器在Swarm 插件可执行的
Docker Agent 镜像不久将会迁移到必威国际有限公司 组织 (JENKINS-42846). |