传统行业(银行、电信、制造)的 CI 里一个很常见的老问题:软件要支持 AIX 、HP-UX 、Solaris ,构建机都挂在 Jenkins 上,但这些系统上的 Java 基本停在 8 ( AIX 7.1 和 HP-UX 最高 Java 8 ,Solaris 最高 11 )。 Jenkins 这几年把 Java 要求从 8 抬到 11 、17 ,现在是 21 ,而且 agent 也一样要满足。安全扫描一来 controller 必须升级,升级完这些老机器就连不上了。常见的做法是再养一套老 Jenkins ,或者这些平台手动构建,或者从新机器 ssh 过去执行命令,但那样老机器就不再是一个真正的节点了。 所以做了 Agent8:把官方的 agent.jar 用 JvmDowngrader 降级成 Java 8 字节码,再处理掉 controller 运行时发过来的新版本 class 、serialVersionUID 变化、OpenJ9 ( IBM Java )和签名安全 provider 这几类兼容问题。老机器还是一个普通节点,sh 、junit 、stash 、中断、Git...