由于业务需要,jenkins 要从一个服务器迁移到另一个服务器,新的服务器没有任何环境,所以操作如下:
1. 使用 rsync命令先转移所有jenkins的文件:rsync --progress --info=progress2 -avz /home/当前的jenkins文件地址 目标服务器登陆用户名@目标服务器IP:/var/lib/jenkins/
2.在新的环境上安装jenkins,本着原封不动的念头我打算安装jenkins支持java8版本的程序,但后来安装好后发现迁移过来的插件很多都不能使用了,虽然java的环境和jenkins的版本都和以前一样,如此之呢个被迫升级到jenkins支持java11的版本,到本文写完为止,
java11的支持到2024.9月结束,但是考虑到我们是内网使用只是对项目进行打包编译发布,不支持也不会产生什么影响,所以就继续使用2.428作为jenkins的升级版本。升级失败的话可以参考:https://www.cnblogs.com/mazhiyong/p/17785597.html
3. 升级后,对老系统的jobs、plugins、workspace、config.xml文件全部复制到对应的目录下,然后重启jenkins
sudo systemctl restart jenkins
开始解决每个组件的冲突,在
Manage Jenkins -》Plugins-》Updates 中,对 有问题的组件尝试升级,对当前系统已经不支持或者有警报风险的组件分别进行排除4. 对git、nodejs、maven 分别进行排查如果没有的话,安装并且设置为环境变量,这一点根据当前公司的项目需要进行设置
5. 对第四点提供的环境变量进入到jenkins的
Manage Jenkins -》Tools
中找到对应项进行设置,这里以jdk举例:
其中警告部分自己判断,如果jdk的安装路径正确并且存在java_home的环境变量的话可以忽略
6. 运行编译的项目后通常是ssh协议把打包后的代码传到指定的服务器的,这时候如哦出现
java.io.IOException: No installation null found. Please define one in manager Jenkins.
的错误,就去项目的配置下重新确认一下nodejs是否有选择当前安装的版本。然后重新保存一下,问题消失
7.还有要注意的一点是需要判断ssh配置的ip是否和jenkins的地址可以通,IP之间出入都可以互通的话再去执行下面步骤,如果出现了java报错。ERROR: Failed to find configuration named [] check the global configuration,去检查一下全局的ssh配置和当前项目是否有配置ssh,如果迁移后发现有配置,那就重新保存一下项目然后运行build,问题解决
8.不要忘记配置全局 Credentials
位于:Manage Jenkins=》Credentials,
这里放的是git访问仓库的用户名和密码等凭证