ARTICLE · 1232089
这个停更快两年的 Jenkins 插件,又更新了

10 月 14 日,我把一个补丁合进了 master。10月15日凌晨,更新中心出现了一个新版本:43.v432948a_9503e。
上一次能升级的版本是 1.3,发布时间 2025 年 1 月 9 日。中间隔了 644 天。
Jenkins 官方的安装统计里,装着它的实例是 122 台,占全部活跃实例的 0.05%,不过考虑到很多Jenkins实例在内网使用,无法上报数据,作为个人项目(当然,已经托管到了jenkinsci官方),它的用户量也不算少。10月15日一早,看着插件中心里的新版本,心情还不错:这是一个新的起点,还有新的Jenkins插件在路上。
它到底在解决什么问题
插件叫 Pipeline Keep Running Step,2020 年 5 月 6 日发了 1.0。它提供一个步骤:keepRunning。
起因很朴素。用 Jenkins 部署一个常驻服务,最直接的写法是这样:
构建很快就成功结束,然后 tomcat 也跟着没了。因为 Jenkins 有一个进程树清理机制(ProcessTreeKiller):构建时它会给环境变量 JENKINS_NODE_COOKIE 打上本次构建的 UUID,构建一结束,就按这个值把环境里带着它的残留进程全部收掉。这个设计是为了防止 CI 泄漏进程,逻辑上没错,但对"启动一个后台服务"这种诉求,它就弄巧成拙了。
这个插件就是解决这个问题:在 keepRunning 包裹的代码块里启动的进程。构建结束后,不会被killer 杀掉,进程就活下来了。
这两年,坏掉的不是代码
2025 年 1 月 9 日那天,我先发了 1.2,13 分钟后补发了 1.3——参数顺序写错,必须当天纠。那次改动的实质只有一件事:把 Jenkins 核心基线抬到 2.452.4,让它在当时的新版本上还能装。
之后的两年,由于我的工作用持续集成平台从Jenkins变成了腾讯蓝盾bkci,插件没有再更新。
插件本身没动,但脚下的地一直在动。Jenkins 的 LTS 从 2.4xx 一路走到 2.568,Java 基线抬到 21,插件发布方式从维护者在自己机器上跑 mvn release:prepare,换成了 JEP-229 的持续交付;更新中心对核心版本还有下限,低于下限的插件等于发不出去。
也就是说,这个插件 644 天没更新,但再想更新时,已经不是那么容易了:它周围的一整套工程契约被重写了:构建、测试、发布、兼容性,全部换代。老 pom 里的 2.479.3 基线已经低于当时的发布下限,1.4-SNAPSHOT 那套手动发版流程也不再符合规范。代码没坏,流水线坏了。
在这期间,Jenkins官方人员 gounthar 提了 Java 17 与核心基线的 PR;strangelookingnerd 打开了 Jenkins Security Scan。这就是开源的好处、项目托管到jenkinsci的益处:陌生维护者比作者本人更在意这个项目还能不能继续使用。在我无暇顾及项目的时候,项目也在被更新,生命被延续。
我的新工作,又用回了Jenkins。但不仅是Jenkins,我还用起了gitlab workflow做代码门禁、Code Review,还维护起了jira工作流规范研发流程、还用起了devtron做云原生部署,还做起了DevOps平台的全栈开发……
工作的内容虽然多了,但依然属于我热爱的DevOps领域。而且我本就是开发出身,不管是写代码还是研发提效,都是我喜欢的事情。
而且新工作的领导更重视AI,也给了我更多自由度,又有技术追求,让我来落地DevOps最佳实践。从领导的嘴里说出“最佳实践”——懂的人都懂,太难能可贵了。
拉回话题。
重启的第一件事,升级架构,规范流程
如果按直觉,重启一个两年没动的插件,第一件事应该是"加点新功能,让人有理由升级"。我没有这么做,先做的是把它升级到最新的CD规范:
| 2.568.3 | ||
| 3 个真实运行时用例 |
升级后,就可以合入PR,自动发布了!这才是咱搞研发效能人的追求!
版本号为什么变成 43.v432948a_9503e
第一次看到这个版本号的人都会愣一下。这是 JEP-229 的规则:版本号由提交数和提交哈希推导,不再由维护者手写。合进默认分支之后,ci.jenkins.io 负责构建,发版工作流把构件部署到 Artifactory,release notes 从 PR 标题自动生成,本机不需要 ~/.m2/settings.xml,也不需要个人凭据。
版本号看着比较奇怪,其实还是能很好的分辨的。舍弃了语义化版本号,实现了完全的自动化。看来,Jenkins官方对效率的追求也是充分发扬了精益精神~
我的判断
六年里这个插件的逻辑没变过,2026 年这次更新,真正花时间的部分几乎全在代码之外:构建怎么迁、测试怎么写、文档怎么改、发布怎么自动化。
所以小项目的维护成本,从来不在功能上,而在生态的移动上。生态每年抬一次地板,不跟着抬,插件就慢慢从"能用"变成"装不上",而且不会有任何报错来提醒。
122 个安装听起来不多,但每一个背后都是别人的一台生产机器。这个数字是我继续往下修的理由,有人用,便是一份认可,也证明自己在做一件有价值的事情。
怎么升级
插件管理器里搜 Pipeline Keep Running Step 即可,新版要求 Jenkins 2.568.3 以上。还停在老版本 Jenkins 上的实例,会停在 1.3(2025 年 1 月)。
用法没有变化,注意必须包在 node 块里:
— END —















































































