Jenkins 整体打包迁移服务器并升级最新版本

基本情况说明
目前旧服务器CentOs需要弃用,上面部署有jenkins
新服务器为UOS操作系统。打算部署最新版本jenkins。
迁移思路:先整体打包迁移再升级到最新版

1查看旧服务信息,打包传输到新服务器

scp命令,实现两台服务器数据传输
10.54 服务器执行scp。(我这里端口号不是默认的22 需要加-p。如果服务器默认端口号22则不用加-p)

#ssh-keygen -t rsa
#ssh-copy-id -p 22 root@xx.xx.1.116

如果报错再手动执行,一般不会报错,我这里可能两个服务器版本相差大
报错:

ssh-copy-id -p 22 root@xx.xx.1.116 Bad port ‘umask 077; test -d ~/.ssh || mkdir ~/.ssh ; cat >> ~/.ssh/authorized_keys && (test -x /sbin/restorecon && /sbin/restorecon ~/.ssh ~/.ssh/authorized_keys >/dev/null 2>&1 || true)’

手动执行

#cat ~/.ssh/id_rsa.pub | ssh -p 22 root@xx.xx.1.116 "umask 077; test -d ~/.ssh || mkdir ~/.ssh ; cat >> ~/.ssh/authorized_keys && (test -x /sbin/restorecon && /sbin/restorecon ~/.ssh ~/.ssh/authorized_keys >/dev/null 2>&1 || true)"

输入116服务器密码成功

2 查看10.54服务器jenkins 在tomcat下的配置文件catalina.sh

可以看到jenkins工作目录和jdk。如果没有单独配置,默认是/root/.jenkins

export JENKINS_HOME=“/home/jenkins/.jenkins” export
JAVA_HOME=/usr/local/java/jdk1.8.0_191 export
JRE_HOME=/usr/local/java/jdk1.8.0_191/jre

停止tomcat,发送tomcat整个文件到116服务器(我这里端口号不是默认的22 需要加-P。如果服务器默认端口号22则不用加-P)

#scp -r -P 22 /usr/local/apache-tomcat-8.5.28 root@xx.xx.1.116:/usr/local/

等待传输
发送jenkins工作空间到116服务器
#scp -r -P 22 /home/jenkins/.jenkins root@xx.xx.1.116:/data/app/jenkins/
发送maven、jdk工作空间到116服务器。(我这里是项目有多个版本JDK,根据实际情况复制传输。)

#scp -r -P 22 /usr/local/java/apache* root@xx.xx.1.116:/usr/local/java/
#scp -r -P 22 /usr/local/java/jdk1.7* root@xx.xx.1.116:/usr/local/java/
#scp -r -P 22 /usr/local/java/jdk1.6* root@xx.xx.1.116:/usr/local/java/
#scp -r -P 22 /usr/local/java/git* root@xx.xx.1.116:/usr/local/java/

3 修改 116 服务器 tomcat catalina.sh jenkins_home 地址

(传输过来的配置还是旧服务的,如果新服务器和旧服务器同一个目录,则不用配置)
/data/app/jenkins/.jenkins

#vi catalina.sh 

export JENKINS_HOME=“/data/app/jenkins/.jenkins” export
JAVA_HOME=/usr/local/java/jdk1.8.0_191 export
JRE_HOME=/usr/local/java/jdk1.8.0_191/jre
#!/bin/sh

#vi /etc/profile

export JENKINS_HOME=/data/app/jenkins/.jenkins
#set git export GIT_HOME=/usr/local/java/git-2.9.5

启动测试

#./startup.sh

访问tomcat端口,成功访问!

4 启动成功,没有开启密码登录,需要设置一下密码。

  1. 重置管理员密码 登录到您的 Jenkins 控制器。 停止Jenkins进程。
  2. 编辑您的或目录内的Jenkins 配置文件(config.xml) 。jenkins/$JENKINS_HOME 查找useSecurity并手动将其从true更改为false 。 保存文件并关闭它。(没有采用此方法)
  3. 重启 Jenkins 服务以应用您的更改。重启 Jenkins 后,导航到您的控制器并登录。
  4. 在仪表板上,选择页面左侧导航窗格中的“管理 Jenkins” 。(选择了此方法)
  5. 在“管理 Jenkins”页面的“安全”部分下,选择“配置全局安全”。
  6. 在“安全领域”下,从下拉菜单中选择Jenkins 自己的用户数据库。确保未选中“允许用户注册”选项并保存更改。这会将您重定向到“管理
    Jenkins”页面。
  7. 在“管理 Jenkins”页面上,选择“用户”。
  8. 您将看到一个显示用户 ID 的列表。选择您要更改密码的用户 ID。 使用齿轮图标或用户 ID的下拉菜单选择配置。找到密码部分以更改您的密码。 更改密码后,您将能够使用相同的用户名和刚刚设置的新密码再次登录到 Jenkins控制器。

参考链接
https://www.jenkins.io/doc/book/system-administration/admin-password-reset-instructions/

5 开始升级jenkins

下载最新版
https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.492.2/jenkins.war
创建2.492文件夹

#cd /usr/local/jenkins2.492

上传下载的war到此目录

6 配置启动和停止脚本
不使用tomcat启动,使用 java -jar启动
启动脚本

#vi start_jenkins.sh
#!/bin/bash
# 定义 JDK 17 的路径,需根据实际情况修改
JDK17_PATH="/usr/local/java/jdk-17.0.14"
# 定义 Jenkins WAR 包的路径,需根据实际情况修改
JENKINS_WAR="/usr/local/jenkins2.492/jenkins.war"
# 定义 Jenkins 工作目录
JENKINS_HOME="/data/app/jenkins/.jenkins"
# 启动 Jenkins
 nohup $JDK17_PATH/bin/java -DJENKINS_HOME=$JENKINS_HOME -jar
 $JENKINS_WAR --httpPort=8083 > jenkins.log 2>&1 &
#chmod 777 start_jenkins.sh

停止脚本

#vi stop_jenkins.sh 
#!/bin/bash
# 定义 JDK 路径
JDK17_PATH="/usr/local/java/jdk-17.0.14"
# 定义要匹配的 Jenkins 进程字符串
JENKINS_PROCESS_STR="${JDK17_PATH}/bin/java
-DJENKINS_HOME=/data/app/jenkins/.jenkins -jar /usr/local/jenkins2.492/jenkins.war"
# 使用 pkill 命令停止 Jenkins 进程
/usr/bin/pkill -f "$JENKINS_PROCESS_STR"
#chmod 777 stop_jenkins.sh

7 配置启动命令和开机自动启动

#vim /etc/systemd/system/jenkins.service
[Unit]
Description=Jenkins Service
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/jenkins2.492/start_jenkins.sh
WorkingDirectory=/usr/local/jenkins2.492
ExecStop=/usr/local/jenkins2.492/stop_jenkins.sh
Restart=always
RestartSec=3
User=root
Group=root

[Install]
WantedBy=multi-user.target

重新加载 systemd 配置

sudo systemctl daemon-reload 

启动 Jenkins 服务

sudo systemctl start jenkins 

停止 Jenkins 服务

sudo systemctl stop jenkins

升级成功!浏览器访问升级成功。

测试jenkins项目发布流程
全局管理配置保存时报错:直接升级全部插件

jenkins 报错java.lang.IllegalArgumentException: The frontend sent an
unexpected list of classes
([“hudson.maven.local_repo.DefaultLocalRepositoryLocator”,“hudson.maven.local_repo.PerExecutorLocalRepositoryLocator”,“hudson.maven.local_repo.PerJobLocalRepositoryLocator”])
rather than an expected single class. See
https://www.jenkins.io/doc/developer/views/table-to-div-migration/ for
more information. at
org.kohsuke.stapler.RequestImplKaTeX parse error: Expected '}', got 'EOF' at end of input: …toryLocator"],"class":[“hudson.maven.local_repo.DefaultLocalRepositoryLocator”,“hudson.maven.local_repo.PerExecutorLocalRepositoryLocator”,“hudson.maven.local_repo.PerJobLocalRepositoryLocator”]}
Logging ID=4fd9ffd3-7c36-4bf6-8cd8-0df64019af6e

构建项目报错

/usr/local/java/apache-maven-3.2.5/bin/mvn -s /usr/local/java/apache-maven-3.2.5/conf/settings.xml -gs /usr/local/java/apache-maven-3.2.5/conf/settings.xml clean install -Dmaven.test.skip=true

Error occurred during initialization of VM Unable to load native
library: libnsl.so.1: cannot open shared object file: No such file or
directory Build step ‘Invoke top-level Maven targets’ marked build as
failure

错误分析

当 JVM 启动时,它需要加载一些本地库文件。在这个错误里,JVM 试图加载 libnsl.so.1,但系统找不到这个文件。libnsl.so.1 是一个用于网络服务的共享库,在较新的 Linux 发行版中可能默认没有安装或者链接已被移除。
需要安装libnsl

#yum install libnsl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值