资讯同步 on Nostr: #V2EX ### [分享创造] 分享一个开源项目 Agent8:让只有 Java 8 的 AIX / ...
#V2EX
### [分享创造] 分享一个开源项目 Agent8:让只有 Java 8 的 AIX / HP-UX / Solaris 继续当新版 Jenkins 的 agent
传统行业(银行、电信、制造)的 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`。
现在的状态:
* Linux 上 HotSpot 8 ( CentOS 6.10 )、OpenJ9 8 、Java 11/17 每次改动都在 CI 里跑 Pipeline 、Git checkout 、凭据、中断、agent 重启。
* 真机 Solaris ( Oracle Java 8u60 )和 HP-UX 安腾( HP Java 8 )能装上、通过自检、作为 SSH agent 连上,完整构建还没确认。
* AIX 7.1 真机跑过一次,发现 IBMJCE 签名 provider 的问题,已修,构建还没确认。
最想要的是 AIX 上的反馈。手上有 AIX / HP-UX / Solaris 构建机的朋友如果愿意试一下,issue 或者直接在这里回复都行,踩到的坑我来修。也想听听大家现在是怎么处理这些老平台的。
https://www.v2ex.com/t/1249844#reply0Published at
2026-10-18 18:14:25 UTCEvent JSON
{
"id": "d27584577e4e93f83db4feb6027233cea52c15925bae8d8e464011157486a35c",
"pubkey": "2d0154e14033e848b448a971322bfbf4e04a29c377012ee0f5ab66099b56f1ad",
"created_at": 1792347265,
"kind": 1,
"tags": [
[
"t",
"v2ex"
]
],
"content": "#V2EX\n### [分享创造] 分享一个开源项目 Agent8:让只有 Java 8 的 AIX / HP-UX / Solaris 继续当新版 Jenkins 的 agent\n\n传统行业(银行、电信、制造)的 CI 里一个很常见的老问题:软件要支持 AIX 、HP-UX 、Solaris ,构建机都挂在 Jenkins 上,但这些系统上的 Java 基本停在 8 ( AIX 7.1 和 HP-UX 最高 Java 8 ,Solaris 最高 11 )。\n\nJenkins 这几年把 Java 要求从 8 抬到 11 、17 ,现在是 21 ,而且 agent 也一样要满足。安全扫描一来 controller 必须升级,升级完这些老机器就连不上了。常见的做法是再养一套老 Jenkins ,或者这些平台手动构建,或者从新机器 ssh 过去执行命令,但那样老机器就不再是一个真正的节点了。\n\n所以做了 Agent8:把官方的 agent.jar 用 JvmDowngrader 降级成 Java 8 字节码,再处理掉 controller 运行时发过来的新版本 class 、serialVersionUID 变化、OpenJ9 ( IBM Java )和签名安全 provider 这几类兼容问题。老机器还是一个普通节点,sh 、junit 、stash 、中断、Git checkout 都能用。\n\n\u003chttps://github.com/keelinfra/agent8\u003e ( MIT ,免费)\n\n装法( inbound agent ):\n\n```\nsh install.sh --url \u003ccontroller 地址\u003e --replace /path/to/agent.jar\n```\n\n它会问 controller 要 remoting 版本、下载匹配的 jar 、校验 sha256 、备份原 jar ,然后用原来的命令重启就行。SSH 节点用 `--dir /opt/agent8`,再把节点的 Java Path 改成 `/opt/agent8/java`。\n\n现在的状态:\n\n* Linux 上 HotSpot 8 ( CentOS 6.10 )、OpenJ9 8 、Java 11/17 每次改动都在 CI 里跑 Pipeline 、Git checkout 、凭据、中断、agent 重启。\n* 真机 Solaris ( Oracle Java 8u60 )和 HP-UX 安腾( HP Java 8 )能装上、通过自检、作为 SSH agent 连上,完整构建还没确认。\n* AIX 7.1 真机跑过一次,发现 IBMJCE 签名 provider 的问题,已修,构建还没确认。\n\n最想要的是 AIX 上的反馈。手上有 AIX / HP-UX / Solaris 构建机的朋友如果愿意试一下,issue 或者直接在这里回复都行,踩到的坑我来修。也想听听大家现在是怎么处理这些老平台的。\nhttps://www.v2ex.com/t/1249844#reply0",
"sig": "ccca2828740ac2c66805381421aff5f890a527e70ec5f44c7be9b507393904bdb502a1795788cc8fb9aaa76b3ab8b4a5e072dc0c3c780c6d9692d6b7662288eb"
}