简单高效迁移jenkins job

前几天由于某些原因,新搞了一个jenkins实例,需要和老的机器具备相同的能力。

也就是说需要将老的jenkins实例上的大概200多个job同步到新的jenkins实例上。

下面是整个迁移的过程,如果你有更好的迁移方案,欢迎你在评论区或者后台交流分享,共同提高​。

0. 方案确定

200多个job一方面是太多了,一个个重新建太费时,另一方面也担心建错。

所以就就想看下有没有整体迁移的方案可以来实施,网上查了一下大概有两种方式。

  1. 插件:job-import-plugin
  2. 同步jobs目录

这里采用的是第二种方案即同步jobs目录

# tree jenkins -L 1
jenkins
省略n多
|-- jobs
|-- logs
|-- nodes
|-- plugins
省略n多
`-- workspace

也就是同步老jenkins实例jenkins主目录下的jobs到新的jenkins实例的jenkins主目录下。

不知道的jenkins主目录的可以到
系统管理-》系统设置-》主目录里查看,或者通过浏览器访问http://ip:port/configure里查看。

基本上就是先压缩老jenkins实例jenkins主目录下的jobs目录,然后再复制压缩之后的文件到新jenkins实例的jenkins主目录下、解压,然后重启服务。

1. 压缩jobs目录

1.1 初次压缩

# tar -czvf jobs-bak.tar.gz jobs

但是执行完这个命令之后迟迟没有结束,感觉不太对劲。第一反应是不是文件太多或者太大。所以赶紧取消了命令的执行,使用了下面的命令来看下目录的大小。

# du sh 

经过了比较长的等待后结果回来了,发现整个目录近47G大,然后就想看下具体是哪些job的目录会比较大。

# du -m --max-depth=1 | sort -nr

再次经过了比较长的等待后结果出来了。

48472 .
35347 ./a
6968  ./b
971 ./c
省略n多目录

1.2 移除过多的历史构建记录之后再次压缩

然后就是清理这些多余的文件,为了清理这些过多的文件还差点整出了一个生产事故,具体参考我的上一篇博文Jenkins开启丢弃旧的构建?你可要小心啊!
在最终清理完这些文件之后再次压缩,这个时候压缩后得到的文件小多了。

# tar -czvf jobs-bak.tar.gz jobs
# du -sh jobs-bak.tar.gz 
123M	jobs-bak.tar.gz

2. 远程拷贝

# scp -f obs-bak.tar.gz root@JenkinsBip:/data/jenkins/

3. 登陆目标机器解压

# tar -zxvf jobs-bak.tar.gz -C jobs

4. 加载jobs

解压之后拷贝的job并不会立即生效,需要通过jenkins的 系统管理=》读取设置相关的功能来加载拷贝过来的job。

另外也可以通过重启服务来让这些job生效。

# systemctl restart  jenkins

5. 经验教训

总结一下本次得到的教训

我们在进行job迁移之前需要先移除过多的历史构建记录,只保留少量的历史构建记录,来保证在源机器和目标机器之间传递的数据尽量小,以减少数据压缩传输耗时,提高迁移效率。

另外就是确保job依赖的插件都要在新的机器上安装,否则迁移过来的job运行时会有问题。

版权声明:本文为tobrainto原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/tobrainto/p/14375587.html