我非常激动地宣布,我们最近发布了1.0版远程关键词Kafka插件在下面必威国际有限公司詹金斯插件。你可以检查更改兴查看此版本中包含的特性。

关于我

我的名字是Pham Vu Tuan,我是来自新加坡的最后一年本科生。这是我第一次参加谷歌夏季的代码并有助于开源组织。

导师

我有GSOC导师在这个项目中帮助我oleg nenashev.Supun Wanniarachchi.。除此之外,我还收到了远程工程中的开发人员的伟大支持Devin Nusbaum.杰夫汤普森

概述

Jenkins Remoting的当前版必威国际有限公司本基于TCP协议。如果失败,代理连接和构建也会失败。还有交通优先级和多代理通信的问题影响了Jenkins稳定性和可扩展性。必威国际有限公司

该项目旨在开发一个插件,以便在Jenkins中添加流行消息队列/总线技术(Kafka)作为容错通信层的支持。必威国际有限公司

对社区的好处

  • 除了诸如JNLP之类的现有方法之外,提供了一种使用Kafka将代理连接到控制器的新方法,或者SSH构建代理插件

  • 帮助解决Jenkins中的控制器和代理通信之间的TCP协议现有问题。必威国际有限公司

  • 帮助解决Jenkins的流量优先级和多代理通信问题。必威国际有限公司

为什么Kafka?

计划此项目时,我们希望使用传统的消息队列系统,如Activemq.rabbitmq.。但是,在一些讨论之后,我们决定尝试尝试Kafka.具有此项目的更合适的功能:

  • Kafka本身不是像ActiveMQ或RabbitMQ等队列,它是一个分布式,复制的提交日志。这有助于删除传统队列系统中的消息传递复杂性。

  • 我们需要支持数据流作为需求,而Kafka在这方面很擅长,这是RabbitMQ所缺乏的。

  • Kafka据说有更好的可扩展性和来自开发社区的良好支持。

建筑概述

该项目包括多个组件:

  • Kafka客户端库 - 新命令传输实现,生产者和消费者客户端逻辑。

  • 使用KafkaglobalConfiguration,KafkAcomputerlauncher和KafkasecretManager转回Kafka插件 - 插件实现。

  • Remoting Kafka Agent - 带有遥控罐的自定义jar代理与自定义引擎实现一起包装,以设置带有Kafka的通信通道。代理也被包装为一个Docker Image.在DockerHub。

  • 所有组件都与Docker组件一起包装。

下图是当前架构的概述:remoting卡夫卡架构

通过这种设计,控制器不再使用直接TCP通信与代理通信,所有通信命令都与KAFKA传输。

特性

该项目现在属于第三个编码阶段,我们有一些功能在1.0版本中提供。

1. Kafka全球配置,支持凭据插件来存储秘密。

远程关注Kafka配置

2.使用Kafka Launcher启动代理。

发射代理Kafka.

3.使用带有秘密的Agent jar从CLI推出代理以确保安全性。

代理CLI.

4.使用Kafka代理运行工作,管道。

演示工作

5.控制器和代理之间的Kafka通信。

Kafka命令

在Kafka执行远程处理操作。在日志中,您可能会看到:

  • 命令执行(SLAveInstallerFactoryImpl.isWindows())

  • ClassLoading(classloader.fetch())

  • 日志流(pipe.chunk())

如何运行演示

我们为此插件设置了一种即时飞行的演示。您可以尝试通过以下方式运行插件的演示操作说明。演示中的功能:

  • Docker Compose启动预配置的控制器和代理实例,它们通过Kafka启动器自动连接。

  • KAFKA通过SSL固定并加密。

  • 实例中有几个演示作业,以便用户可以在代理上启动作业。

  • Kakfa Manager在LocalHost:9000支持监控Kafka集群。

第2阶段演示幻灯片

第2阶段演示视频

关于作者
PHAM VU TUN.

Pham Vu Tuan是来自新加坡的开发商。他开始从谷歌2018年谷歌夏季贡献Jenkins必威国际有限公司必威国际有限公司Jenkins通过消息总线/队列传输