★ 北京广利核系统工程有限公司 刘树龙,武方杰,史叶,贾虎军,李健,纪亮
关键词: 自动化部署;Jenkins;无头环境;UI自动化;会话隔离;核电仪控系统
1 引言
核电仪控系统是核电厂的核心控制中枢,其配套的图形界面工控软件,对部署的一致性、可靠性、可追溯性有着极高的安全要求。随着核电仪控系统规模化建设,传统人工逐台部署的方式效率低,已无法满足工程需求,基于UI自动化技术的自动化部署成为必然趋势。
当前主流的自动化部署工具(如Ansible、GitLab CI)仅能较好地支持无GUI交互的命令行式部署,针对无头环境下带GUI交互的工控软件部署,存在三大核心痛点: 一是无头环境缺少图形渲染载体,导致工控软件GUI无法正常初始化, UI自动化脚本执行失败;二是Windows操作系统原生的会话隔离架构,导致多节点并发部署时出现会话抢占、模拟输入路由错误等冲突问题,无法支撑规模化并行部署;三是传统方案部署逻辑与客户端强耦合,版本更新需逐台修改客户端,部署一致性难以保障,且部署过程黑盒化,无法实现全流程监控与追溯。
针对上述问题,本文设计了一种基于Jenkins与MVC架构的自动化批量部署系统,以Jenkins为核心调度引擎,结合Django MVC前后端分离架构,实现了部署逻辑与客户端的完全解耦,在服务端解决了无头环境GUI渲染与多节点并发会话冲突问题,同时构建了全流程可监控、可追溯的部署管控体系。最后通过实验验证了该系统在核电仪控场景下的可行性与优越性。
2 相关工作
当前国内外针对软件自动化部署的研究已较为成熟,但针对工业场景,尤其是无头环境下带GUI交互的工控软件批量部署的研究仍存在明显局限。
在通用自动化部署领域, 学者们围绕Ansible、 Jenkins等工具开展了大量优化研究,如基于Ansible实现了一定规模的主机批量程序参数配置、批量应用部署和批量功能校验等功能,有效地提高了技术人员的工作质量和效率[1] ,但该类方案对Windows平台兼容性较差, 且未解决UI自动化部署的相关问题; 基于Docker和Jenkins实现了对GitHub中代码更新的持续监测,并将环境与应用自动部署到测试机器中[2]。
在UI自动化部署领域,现有研究多聚焦于软件测试环节,如基于Selenium和Pytest的Web自动化测试框架,实现Web应用的UI自动化测试[3] ,但未解决无头环境下的执行问题,且未与批量部署流程深度融合。
在工业控制系统部署领域,现有方案多聚焦于提高软件部署的效率,如采用客户端/服务器(C/S)架构实现软件自动部署[4]。针对核电仪控这种高安全要求、无头环境、带GUI交互的特殊部署场景,尚未形成成熟的规模化并行部署方案。本文针对该场景的核心痛点,提出了一套完整的解决方案,填补了相关研究的空白。
3 系统总体设计
3.1 设计目标
结合核电仪控场景的需求,本系统的核心设计目标如下:
实现部署逻辑与客户端完全解耦,客户端仅需完成少量预配置即可接入部署;
解决无头环境下GUI工控软件的UI自动化脚本执行问题,支持多节点并行部署;
保障多节点部署的完全一致性,消除版本、环境差异导致的部署异常;
实现部署全流程的实时监控与可追溯,满足核电场景的安全管控要求。
3.2 系统整体架构
本系统采用分层式设计, 基于经典MVC架构构建前后端管控体系,整体分为前端交互层、后端控制层、 Jenkins调度层与客户端执行层四层,各层之间低耦合、高内聚,整体架构如图1所示。

图1 系统整体架构图
(1)前端交互层:基于HTML5与CSS3构建可视化操作界面,为用户提供部署参数配置、任务触发、进度实时查看、历史任务追溯等核心交互入口,支持批量录入待部署主机IP、待安装软件版本、部署参数等信息,降低操作门槛。
(2)后端控制层:基于Django框架实现MVC架构, Model层负责存储部署配置、Jenkins构建号、客户端状态等核心数据;View层负责前端界面与后端数据的交互渲染;Controller层为核心控制单元, 负责参数校验、Jenkins接口调用、客户端状态接收、任务与构建号的绑定关联。
(3)Jenkins调度层:部署于服务端,为系统的核心调度引擎,负责软件安装包、标准化安装脚本的统一存储与分发,同时集成远程桌面协议(RDP)模块与注册表自动配置模块,在服务端完成图形化会话创建、并发冲突解决, 为客户端提供稳定的UI自动化执行环境。
(4)客户端执行层:为核电仪控场景中无本地物理显示器的Windows工控节点,仅需预装OpenSSH Server实现与服务端的安全通信,无需预存任何部署逻辑,负责接收服务端分发的部署文件,在分配的独立图形会话中执行安装脚本,并实时回传部署进度与状态。
3.3 系统整体工作流程
系统的完整部署流程遵循“配置-调度-环境构建-分发-执行-监控-追溯”的闭环逻辑,整体时序流程如图2所示,具体步骤如下:
(1)用户通过前端界面完成待部署节点IP、软件版本等参数配置,提交部署请求至Django后端;
(2)后端校验参数合法性后,调用Jenkins API触发对应部署任务,获取唯一构建号并与本次任务绑定存储;
(3)Jenkins在服务端完成RDP独立图形化会话创建,通过修改指定注册表项解决并发会话冲突,同时通过开机自启脚本完成与Windows图形子系统的绑定;
(4)Jenkins通过OpenSSH协议,将标准化安装包与脚本统一下发至所有目标客户端节点;
(5)客户端在分配的独立图形会话中执行安装脚本,完成工控软件的自动化部署;
(6)客户端实时将部署进度、执行状态、异常信息回传至后端,后端通过构建号关联对应任务,在前端实时展示监控数据;
(7)部署完成后,所有任务数据、执行日志、状态信息均持久化存储,支持全流程追溯。

图2 系统部署时序流程图
4 关键技术实现
4.1 基于MVC的前后端分离管控架构
本系统采用Django MVC前后端分离架构,实现了部署管控逻辑与客户端执行逻辑的完全解耦。所有部署相关的流程、脚本、参数配置均集中在服务端管理,用户仅需通过前端可视化界面完成配置,无需对客户端进行任何预配置或改造,彻底解决了传统方案部署逻辑与客户端强耦合、版本更新需逐台修改的痛点。
同时,该架构具备良好的扩展性与兼容性,可快速对接核电仪控系统的资产管理、权限管控等平台,支持批量节点的统一管理,符合工业场景的规模化部署需求。
4.2 基于Jenkins的统一分发与一致性保障机制
系统以Jenkins为核心调度引擎, 构建了“一次配置、全节点同步”的一致性保障机制。所有待部署的软件安装包、UI自动化安装脚本均在服务端完成标准化封装与版本管理,部署时由Jenkins通过OpenSSH安全通道,向所有目标节点统一下发完全相同的部署文件,确保所有节点的执行环境、脚本版本、部署参数完全一致,从源头消除了版本差异、环境差异导致的部署不一致问题。
同时,Jenkins的分布式节点调度架构,可支撑数百级节点的并行分发与调度,不存在传统Ansible方案SSH推模式的性能瓶颈,具备良好的规模化部署支撑能力。
4.3 无头环境下的会话管理与并发冲突解决
这是本系统的核心创新点,针对无头环境下UI自动化脚本无法执行、多节点并发会话冲突的问题,系统在服务端实现了完整的解决方案,具体如下:
图形化会话环境构建:针对无本地物理显示器的客户端节点, Jenkins在服务端通过远程桌面协议(RDP)为每个节点创建独立的图形化会话宿主环境,为UI自动化脚本提供GUI渲染与交互的载体,解决了无头环境下显示设备初始化失败的问题。
图形子系统绑定:通过编写批处理脚本实现Jenkins服务开机自启,强制Jenkins代理进程与Windows图形子系统建立稳定绑定,确保服务重启后仍能正常加载图形环境,避免因进程未绑定图形服务器导致的脚本执行失败。
并发冲突解决:针对Windows会话隔离导致的并发冲突问题,系统在服务端通过注册表自动配置模块,修改两项注册表键值,使远程会话在最小化时仍保持图形环境处于激活状态,确保每个节点的模拟输入操作精准路由至所属的独立会话,彻底解决了多节点并发时的会话抢占、输入隔离问题。
4.4 全流程可监控的部署追溯机制
系统构建了基于Jenkins唯一构建号的全流程监控与追溯体系。后端调用Jenkins任务时,获取的唯一构建号与本次部署任务全程绑定,客户端回传的状态数据、Jenkins的执行日志、部署结果均通过该构建号进行关联。
用户可通过前端界面实时查看每个节点的部署进度、执行状态、异常告警,部署完成后可通过历史任务查询,追溯本次部署的全流程数据、操作日志、节点详情,实现了部署过程的透明化、可管控、可追溯,满足核电仪控场景的安全合规要求。
5 实验验证与结果分析
5.1 实验环境
(1)实验节点:合计31台核电仪控专用工业计算机,包含21台服务器站、8台操作员站、2台工程师站。
(2)软硬件配置:服务端采用工业机架式服务器,部署Windows Server 2019操作系统,预装Jenkins与Django管控框架;所有客户端节点均采用Windows 10企业版系统,仅预装OpenSSH Server,无额外预配置,满足零改造接入要求。
(3)部署对象:核电仪控系统配套带GUI交互的图形化工控软件,覆盖向导式GUI交互全流程,完全还原现场工程部署场景。
(4) 网络环境:核电仪控专用隔离千兆局域网,无外网接入,符合核安全相关网络规范。
5.2 实验设计与结果分析
本次实验围绕核电仪控部署核心要求, 设置3组验证实验, 全面验证系统的功能有效性、部署效率与安全管控能力。
5.2.1 部署一致性验证
实验目的: 验证系统多节点并行部署的配置一致性,满足核电仪控系统对部署版本的统一要求。
实验方案:采用本系统对31台目标节点完成全量工控软件部署, 部署完成后逐台核查软件版本、安装路径、服务运行状态等, 统计全指标合格节点数与一致性合格率。
实验结果:31台节点的全部核心指标均符合预设标准,部署一致性合格率达100%,彻底规避了人工部署的人为操作误差与环境差异带来的配置偏差, 完全满足核电仪控系统同版本、同配置的安全部署要求。
5.2.2 部署效率验证
实验目的:验证系统并行部署能力,量化其对现场工程实施效率的提升效果。
实验方案: 分别采用本系统全节点并行部署、现场常规人工逐台部署两种方式, 完成31台节点的全量部署,统计两种方式的总耗时。
实验结果:本系统完成31台节点全量部署总耗时仅9分38秒,而传统人工串行部署总耗时约7小时,部署效率提升97.8%,降低了人力成本。
5.2.3 部署稳定性与异常管控能力验证
实验目的:验证系统长期部署稳定性、异常容错能力与全流程管控能力。
实验方案:采用本系统对31台目标节点开展10轮重复全量部署实验,模拟现场多轮次软件升级、重装的工程场景,记录部署成功率、异常表现与系统响应情况。
实验结果:10轮累计310台次部署中,累计出现3台次单节点部署失败,单轮最大异常节点数为1台,综合部署成功率达99.03%;所有异常均为偶发的单节点故障,无系统性故障与跨节点风险扩散。针对偶发异常场景,系统具备完善的安全管控能力:异常发生时, 系统可在第一时间触发该节点本地部署流程的中断;同时异常节点的执行日志、故障上下文与状态信息可实时回传至服务端,运维人员可通过任务绑定的Jenkins唯一构建号完成全流程追溯。
5.3 实验综合结论
本次实验验证表明,本系统可完全适配核电仪控场景Windows工控软件的无头环境自动化部署需求,在部署一致性、部署效率、稳定性与安全管控能力上均显著优于传统人工部署方案;系统具备完善的异常熔断、风险隔离与全链路追溯机制,完全满足核电仪控领域高安全、高可靠、高合规性的部署要求,具备极高的工程应用价值。
6 结论与展望
本文针对核电仪控场景下无头环境工控软件UI自动化批量部署的核心痛点,设计并实现了一种基于Jenkins与MVC架构的自动化部署系统。该系统通过服务端集中管控架构实现了部署逻辑与客户端的解耦,通过统一分发机制保障了多节点部署的一致性,在服务端通过RDP会话管理与注册表优化解决了无头环境UI自动化执行与并发冲突问题,同时构建了全流程可监控、可追溯的管控体系。实验结果表明,该系统在部署一致性、并发能力、部署效率、可靠性等方面均远优于传统方案,能够满足核电仪控场景的高安全、高可靠规模化部署需求。
未来的研究将围绕三个方向展开:一是扩展系统的兼容性,适配Linux、国产操作系统等更多平台,支持更多类型的工业控制软件;二是结合人工智能技术,实现部署异常的智能预测与自动修复,进一步提升系统的可靠性;三是深度对接核电仪控系统的全生命周期运维平台,实现从部署、运维到升级的全流程自动化管控。
作者简介:
刘树龙(2000-),男,山东人,工程师,学士,现就职于北京广利核系统工程有限公司,主要从事核安全级仪控系统的系统评测方面的工作。
参考文献:
[1] 吴兴发, 董云泰, 牛晓, 等. 基于Ansible自动化运维工具的多系统快速切换研究[J]. 电子质量, 2023 (3) : 20 - 23.
[2] 徐星, 李银桥, 刘学锋, 等. 企业开发、测试环境快速部署方案的设计与实现[J]. 工业控制计算机, 2018, 31 (3) : 12 - 14.
[3] 马立鑫, 刘海燕, 张兵权. 基于Selenium和Pytest的Web自动化测试框架应用[J]. 电脑知识与技术, 2023, 19 (34) : 52 - 54.
[4] 徐占艳, 李藩为, 孙寅春, 等. 航空发动机数控软件测试环境自动部署研究[J]. 航空计算技术, 2018, 48 (4) : 82 - 84.
摘自《自动化博览》2026年9月刊








案例频道