一、概述
二、安装
1.安装
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
yum install -y jenkins
或者下载rpm包来安装:
wget https://pkg.jenkins.io/redhat/jenkins-2.76-1.1.noarch.rpm
rpm -i jenkins-2.76-1.1.noarch.rpm
2.jenkins配置文件:
/etc/sysconfig/jenkins:
还有一个是/etc/init.d/jenkins,这里配置的是JDK路径,准确来说是java命令所在路径,
如果JDK重装过,启动Jenkins报错"Failed to start LSB: Jenkins Automation Server.",
需要重新配置JDK。
3.启动jenkins,访问ip:8080,在配置插件的时候出现错误:
查看/var/jenkins/log:
2019-09-15 02:15:00.069+0000 [id=27] WARNING hudson.model.UpdateCenter#updateDefaultSite: Upgrading Jenkins. Failed to update the default Update Site 'default'. Plugin upgrades may fail.
java.net.SocketTimeoutException: connect timed out
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:666)
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:264)
at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367)
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.followRedirect0(HttpURLConnection.java:2735)
at sun.net.www.protocol.http.HttpURLConnection.followRedirect(HttpURLConnection.java:2647)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1830)
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:167)
at hudson.model.UpdateSite.updateDirectlyNow(UpdateSite.java:189)
at hudson.model.UpdateCenter.updateDefaultSite(UpdateCenter.java:2456)
注意Failed to update the default Update Site 'default':连接默认的站点超时。
看一下/var/lib/jenkins/hudson.model.UpdateCenter.xml:
把这个url换成下面的清华大学镜像地址,上面是已经换过的。建议换之前备份文件。
jenkins插件清华大学镜像地址:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
4.jenkins目录:(引用自https://blog.youkuaiyun.com/miss1181248983/article/details/82840006)
ll /var/lib/jenkins
jobs 浏览器上面创建的任务都会存放在这里
logs 存放jenkins相关的日志
nodes 多节点时用到
plugins 插件所在目录
secrets 密码秘钥所在目录 #jobs和plugins目录比较重要
jenkins存放数据不依靠数据库,所以在移植时只需要拷贝整个程序主目录即可。
三、配置
安装git:
yum -y install git #安装git
安装maven:https://blog.youkuaiyun.com/Ivorybeach/article/details/100866463
Global Tool Configuration配置JDK,Maven,Git:
Configure System邮箱配置:
163和qq的邮箱服务都需要手机验证,我这里配不了,暂略。
Configure System配置SSH:
首先生成密钥,不配密码,然后复制公钥到待部署服务器:
ssh-keygen -t rsa #生成密钥
ssh-copy-id -p 22022 -i /root/.ssh/id_rsa.pub root@ip #复制公钥,注意待部署服务器的port:22022
SSH Server配置:
-------------------------------------------上面是正确操作,以下是过程中出现的错误-----------------------------------------
在Jenkins上TestConfiguration失败后查看日志:
9月 16 09:58:50 localhost.localdomain sshd[1856]: Address 192.168.43.208 maps to localhost.localdomain, but this does not map back to the address - POSSIBLE BREAK
9月 16 09:58:50 localhost.localdomain sshd[1856]: error: Received disconnect from 192.168.43.208 port 46514:3: com.jcraft.jsch.JSchException: Auth fail [preauth]
9月 16 09:58:50 localhost.localdomain sshd[1856]: Disconnected from 192.168.43.208 port 46514 [preauth]
9月 16 09:58:51 localhost.localdomain sshd[1859]: Address 192.168.43.208 maps to localhost.localdomain, but this does not map back to the address - POSSIBLE BREAK
9月 16 09:58:52 localhost.localdomain sshd[1859]: error: Received disconnect from 192.168.43.208 port 46516:3: com.jcraft.jsch.JSchException: Auth fail [preauth]
9月 16 09:58:52 localhost.localdomain sshd[1859]: Disconnected from 192.168.43.208 port 46516 [preauth]
百度一下上面的错误,Address 192.168.43.208 maps to localhost.localdomain, but this does not map back to the address - POSSIBLE BREAK,这个是说ip可以连到主机名,但是主机名对不上ip,也就是Ping主机名Ping不到192.168.43.208,这在SSH是不允许的,所以会报错。解决的话,一是就这个思路去解决,二是修改/etc/ssh/ssh_config和/etc/ssh/sshd_config中的GSSAPIAuthentication no,将no改为yes,这样ssh就不会验证ip和主机名必须对应了。
上面的排错思路来自于:https://blog.51cto.com/qmdanxie/912535
四、使用
新建一个item,配置好git。
在构建中,配置Send files or execute commands over SSH:
配置项说明:
Source files:要传输的文件所在目录,注意是相对于工作空间根目录,默认的是在JENKINS_HOME下的workspace,如果填的是'**/**',表示传输workspace下所有文件。
上面的解释似乎不对,此处存疑:jenkins发布的时候是从git上拉取的项目,要发布也只会发布所拉取的项目,怎么会从workspace中上传呢?workspace应该只是存放构建的项目的目录。此处存疑。。。。
Remove Prefix:配置的Source file路径中要移除的前缀
Remote Directory:远程目录,在之前的Remote Directory配置的"/"的基础上。
Exec Command:通过SSH连接目标服务器后,要执行的脚本
其他配置说明:
保存后,点进test2,选择立即构建:
#1代表第一次构建。
查看控制台输出:
到SSH server上查看/var/www/html目录,成功部署:
附:jenkins忘记密码:
需要找到jenkins的config.xml文件,目录为/var/lib/jenkins/config.xml,<useSecurity>改成false:
修改之后进入jenkins不再需要密码,然后重新在jenkins中配置管理员及密码。