传统行业(银行、电信、制造)的 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 checkout 都能用。
https://github.com/keelinfra/agent8 ( MIT ,免费)
装法( inbound agent ):
sh install.sh --url <controller 地址> --replace /path/to/agent.jar
它会问 controller 要 remoting 版本、下载匹配的 jar 、校验 sha256 、备份原 jar ,然后用原来的命令重启就行。SSH 节点用 --dir /opt/agent8,再把节点的 Java Path 改成 /opt/agent8/java。
现在的状态:
最想要的是 AIX 上的反馈。手上有 AIX / HP-UX / Solaris 构建机的朋友如果愿意试一下,issue 或者直接在这里回复都行,踩到的坑我来修。也想听听大家现在是怎么处理这些老平台的。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.