背景
公司内部jenkins服务器变更,需要迁移jenkins;
jenkins数据包含以下方面:
-
- 构建任务(前后端服务构建任务)
- 系统配置
- 插件配置(NodeJs,Git等)
- 全局工具配置(NodeJs配置,Maven配置等)
- 节点
- 用户
- 凭据
方案
jenkins提供以下扩展方式:
- Job Import Plugin:用于导入另一个 Jenkins 实例的配置;
- “ThinBackUp”插件:用于备份和还原 Jenkins 数据;
- “Jenkins CLI”:Jenkins CLI 是 Jenkins 的命令行接口,通过它你可以执行几乎所有的 Jenkins 操作
特性 | Import 插件 | ThinBackup 插件 | Jenkins CLI |
用途 | 导入其他 Jenkins 实例的配置 | 备份和还原 Jenkins 数据 | 通过 CLI 执行 Jenkins 操作 |
功能特性 | 导入作业和配置信息 | 备份 Jenkins 数据,还原功能 | 通过命令行执行 Jenkins 操作 |
使用场景 | 将 Jenkins 配置从一个实例迁移到另一个实例 | 定期备份 Jenkins 数据,防止数据丢失 | 自动化、脚本化执行 Jenkins 操作 |
数据范围 | 主要涉及 Jenkins 的配置信息和作业 | 涉及更广泛的 Jenkins 数据,包括用户数据、插件配置等 | 可以执行几乎所有 Jenkins 操作 |
迁移对比 | 1、两个jenkins需要处于同一个网络下; 2、仅能迁移job信息; | 1、无需考虑网络环境; 2、两个jenkins版本需要一致; 3、可以迁移jenkins绝大数相关的配置数据; (旧服务器上备份,新服务器上使用备份文件恢复) | 1、无需考虑网络环境; 2、需要自定义脚本,进行迁移,成本较高; |
迁移
综上考虑,使用ThinBackup插件;(注意:新旧jenkins版本需要一致)
ThinBackup
1、在新旧jenkins上插件中心安装ThinBackup插件,无需重启;
2、在新旧jenkins系统管理->ThinBackup配置;
ThinBackup插件页面
修改backup目录
3、在旧jenkins上进行备份;备份文件在上一步设置路径下,文件夹名为时间,例:FULL-2023-11-10_14-39
备份内容如下:
4、拷贝备份文件夹,至新jenkins远程目录下;
tar -zcvf backup.tar.gz /root/.jenkins/backup scp backup.tar.gz root@ip:/root/.jenkins/
5、在新jenkins服务器上,恢复备份;
6、重启新jenkins服务器,迁移完成;
补充
Job Import Plugin
1、新jenkins服务器上插件中心安装“Job Import Plugin”插件,无需重启;
安装成功之后,在Dashboard可以看到该插件;
2、在新jenkins服务器上“系统管理->系统配置",配置旧jenkins服务器url、用户名密码;
PS:如果Credentials的添加点不动,保存一下,重新再进;
3、在新jenkins中,进入Job Import Plugin;
点击query,查询旧jenkins服务器所有job信息;
勾选需要的插件,import完成导入;
Jenkins CLI
# 拷贝所有job的config.xml
tar -zcvf jobs.tar/gz /root/.jenkins/jobs/*/config.xml
# 通过jenkins-cli导入单个
"D:\Program Files\Java\jdk-11.0.16.1\bin\java" -jar jenkins-cli.jar -auth username:password -s http://ip:port/ create-job jobname<D:\Workspace\My-Workspace\jenkins\jobs\job\config.xml
参考
Export/Import Jobs in Jenkins | Baeldung on Ops
【Jenkins插件_实践】1.Job Import Plugin迁移Jobs - 简书
Jenkins如何导入单个Job配置文件_jenkins 导入xml配置文件_wangxiaoyu_m的博客-CSDN博客