bk-ci
bk-ci copied to clipboard
feat: agent支持JDK自动升级
What would you like to be added:
目前自动升级仅支持对devopsAgent,devopsDaemon, worker-agent.jar 等程序的升级,目前agent上一些老旧的jdk可能存在风险,需要有一个统一的自动升级能力。
Why is this needed: 目前agent上一些老旧的jdk可能存在风险,需要有一个统一的自动升级能力。以及后续可能会新增的第三方组件的升级。
Agent侧设计: 1、 心跳逻辑增加上报 JDK版本信息(类似OpenJDK Runtime Environment (Tencent Kona 8.0.6-internal))、系统架构(amd64/arm64/mips64等等)
2、CheckUpgrade 升级逻辑接口上报jdk的版本, downloadUpgradeFiles要能支持下载jdk升级包, 下载后压缩先命名为jdk_${新版本名}, 并将路径刷新到AgentConfig.JdkHome 字段, 并调用SaveConfig 将值保存新增的Config.KeyJDKPath(暂定命名) 调用保存到 .agent.properties , 便于下面第34步的Config.GetJava后续能读取到新的路径,
3、 删除旧版本的JDK目录
4、Config.GetJava 函数兼容现有逻辑,原有jre/开头的(早期使用的是jre,所以命名是jre,其实是jdk),需要新增改为读取 AgentConfig.JdkHome ,该配置项上述第2步指定了jdk的真正路径Home,如文件不存在再兼容读取jre开头(保持旧逻辑)。
后台功能设计: 1、 利用 T_ENVIRONMENT_THIRDPARTY_AGENT 的AGENT_PROPS 字段,保存Agent上报基础信息 2、完善下载接口,让agent可指定要下载的升级文件 3、完善升级逻辑,增加对jdk的版本记录,确保能检测到agent侧的jdk 升级请求

