升级Jenkins

war:下载新版的war文件,替换旧版本war文件。重启即可。

二进制:卸载旧版本,安装新版本即可。

Jenkins程序下载地址:http://mirrors.jenkins-ci.org/

note:升级前,请测试该版本和你本地数据的兼容性。如何测试:将JENKINS_HOME拷贝一份到新的机器,用新版的程序启动。测试对应的插件和配置。

迁移和备份

如果有jenkins服务在运行中,建议先停止jenkins服务。

备份Jenkins的配置

进入/root目录下,使用tar -cvf jenkins.tar .jenkins/*命令 对该目录下的所有文件进行打包。然后导出到本地(sz 文件名:导出文件/压缩包等)

然后拷贝数据到新路径,我迁移的路径为 /home/.jenkins,

cp /root/.jenkins /home/.jenkins

设置JENKINS_HOME环境变量参数
打开tomcat的bin目录,编辑catalina.sh文件,在第一行下面添加
export JENKINS_HOME=/home/.jenkins

并且在profile文件最后加入:
vi /etc/profile
在最后加入:
export JENKINS_HOME=/opt/ldkjdata/.jenkins
保存,退出后执行
source /etc/profile
让配置生效

然后启动jenkins,所有的插件,配置,job及备份全部已迁移。

遇到问题:

java.net.SocketTimeoutException: connect timed out
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394)
	at java.net.Socket.connect(Socket.java:606)
	at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:287)
	at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
	at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
	at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
	at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:292)
	at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:395)
	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
	at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1162)
	at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1056)
	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1570)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1498)
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:268)
	at hudson.model.DownloadService.loadJSON(DownloadService.java:116)
	at hudson.model.UpdateSite.updateDirectlyNow(UpdateSite.java:216)
	at hudson.model.UpdateSite.updateDirectlyNow(UpdateSite.java:211)
	at hudson.PluginManager.checkUpdatesServer(PluginManager.java:1768)
	at hudson.util.Retrier.start(Retrier.java:63)
	at hudson.PluginManager.doCheckUpdatesServer(PluginManager.java:1739)
	at jenkins.DailyCheck.execute(DailyCheck.java:93)
	at hudson.model.AsyncPeriodicWork.lambda$doRun$0(AsyncPeriodicWork.java:100)
	at java.lang.Thread.run(Thread.java:748)

原因是:

/home/.jenkins/hudson.model.UpdateCenter.xml

连接超时:

https://updates.jenkins.io/update-center.json

因为我服务器是内网的,因此,我找网管处理,临时放开访问上述地址的访问权限。

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐