各位小伙伴们,我也是第一次学jenkins,由于搞了两天踩了很多坑,这里就将最完整的搭建方法列举出来。
废话不多说,开始干!
一 . 首先现在centos中下载jenkins包,这里有两种方式:
1.下载并运行 jenkins.war
wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war
启动命令:java -jar jenkins.war 默认使用的8080端口如这里端口被占用的话可以这样启动
java -jar jenkins.war --httpPort=8089 :启动jenkins指定端口
2. 使用npm命令安装jenkins,如果没有npm 使用 yum install -y npm进行插件安装
下载命令:https://prodjenkinsreleases.blob.core.windows.net/redhat/jenkins-2.143-1.1.noarch.rpm 我这里安装比较稳定的版本,其他版本自行选择 。链接:https://pkg.jenkins.io/redhat/
下载好之后解压: rpm -vih jenkins-2.140-1.1.noarch.rpm
3. 修改jenkins服务端口(我这里使用默认的8080,如果想修改如下)
vim /etc/sysconfig/jenkins
4.启动jenkins,执行:
service jenkins start
如果启动失败了如这样:
解决方法:
修改jenkins配置文件中JDK路径是否与本地路径一致,不一致则将Java的正确路径加入
vim /etc/init.d/jenkins
然后再启动 -常用命令service jenkins start/stop/restart(启动、关闭、重启)
5. 访问jenkins页面
这里要讲一下如果你的linux没有关闭防火墙的话是访问不到的,关闭防火墙命令如下:
查看防火墙状态:firewall-cmd --state
停止firewall :systemctl stop firewalld.service
禁止firewall开机启动 :禁止firewall开机启动
好了到这里结束,访问 IP+端口
6.你会看到这样的页面
进入虚拟机 查看密码:cat /var/lib...... 就是上面框框里的路径
7.看到这界面jenkins就安装完成了,然后查看密码文件的密码复制到框里点击Continue进入选择插件安装界面选择,我选的第一个(推荐安装)或者第二个(自定义安装)
8.等一会插件安装完毕进入创建用户界面:
9.彻底卸载jenkins命令
(1)service jenkins stop
(2)yum clean all
(3)yum -y remove jenkins
(4)rm -rf /var/cache/jenkins
(5)rm -rf /var/lib/jenkins/
二 . 部署推送到远程服务器
1.首先给大家看一个图,这个比较好理解
2. 配置环境 jenkins需要 很多环境这个贼麻烦,当初我也是搞了很久,身为开发还要兼职运维工作 ,不过多学一点你手上的砝码就多一点,好了不多说请往下看
这里需要下载三个东西:(1)jdk1.8 这个不多说官网自己下;(2)apache-maven-3.6.0 官网下,我这里用的是最新的; (3) git 环境下载 我用的是gitlab 代码托管平台 ,参考:https://www.cnblogs.com/wenwei- blog/p/5861450.html
下载完成之后配置环境:vim /etc/profile
gitlab不需要配置环境变量但是要在页面上配置,不要走开后面更精彩!
3.进入页面后安装插件如:
Maven Integration 使我们可以开始一个maven项目作为任务
Git plugin 使我们可以读取存放在git仓库的项目
publish over ssh 顾名思义就是将提交的代码推送到 jenkins上
如图在过滤里面选择以上三个插件即可!
4.配置jenkins全局工具
jdk在选取安装的时候,如果在我们的服务器上已经安装好的话,直接填写JAVA_HOME路径即可,否则jenkins自动安装的话,需要提供Oracle的账号以及密码
进入之后如下图:
这里注意Git环境必须安装,如果你不安装如图
5.开始构建项目
这里我用的是Springboot 构建jar包的方式部署到远程服务器,ofcourse 你也可构建maven项目,如果用maven的话打成war发送到远程服务器Tomcat是一样的。步骤都一样,这个很好理解。
首先新建项目如图:
点击完之后如下图,描述这块记得写上,最开始这块没写,在构建项目的时候会有报错,报不能配置name[ ],这里写上就好了
后点击源码管理如下图,我们选择git,repository url 写gitlab仓库的地址,credentials是指信任,我们需要在gitlab中添加jenkins的公钥 ,在下图的key中填写jenkins服务器的公钥,title处填写jenkins,然后在到jenkins上就可以看到credentials处可以选择jenkins了,然后点击构建触发器选项卡 注:我这里用的是http方式的git仓库,只是为了先试试能否正常运行,当然你也可以使用shh方式的git地址。
点击触发器选项卡之后如下图,我们点击Build when a change is pushed to GitLab. GitLab CI Service URL: http://192.168.4.117:8080/project/test,记住这个url地址,待会我们需要在gitlab上配置 ,然后点击构建选项卡 构建环境暂不配置
点击构建选项卡之后如下图:maven version处选择我们在global tool configuration处配置的maven名称 goals处填写maven命令,因为我们要打包,所以填写clean package,不懂的可以去学一下maven命令,然后点击构建后操作选项卡
点击构建后选项卡之后如下图,选择send build artifacts over ssh
完成后接下来配置ssh,也就是要上传的测试服务器ssh信息
首先我们先要在jenkins服务器上生成秘钥,然后利用秘钥要进行免密登录
在jenkins服务器上执行ssh-keygen -t rsa,一路回车就可以 一路回车的话密码为空,这样就在/root/.ssh/下生成的两个文件id.rsa(私钥)和id.rsa.pub(公钥),我们需要把公钥的内容写到测试服务器(tomcat服务器上)的/root/.ssh/authorized_keys文件中 如果没有就新建一个,接下来我们开始配置
点击系统管理---系统设置
详细解释:Passphrase是指在生成秘钥的时候设置的密码,由于我们都是一路回车下来的所以此处不用写
path to key是指私钥的位置/root/.ssh/id.rsa
key是指私钥的内容 path to key 和key任选其一即可
name是指你要远程到tomcat的名称 随便写就可以,后期为了区分,所以我写了测试服务器
hostname是指测试服务器的ip
username是指测试服务器的用户
remote directory是指要放到测试服务器的目录,根据自己情况定义路径
然后点击测试看是否连接成功
到此,jenkins自动打包,上传就配置完成了,接下来我们验证一下,点击项目构建,控制台输出如下,
进入测试服务器前面/usr/local看是否有jar包,这里也有个坑注意:
这里的路径是指,测试服务器当前根路径而构建后的路径是指你将要把jar包放到哪个位置,两个路径不能写一样,不然会发不过去的
二 .提交代码到gitlab,Jenkins监听到自动打包部署
首先我说明一下,网上的教程大多都是不完整的,给出的全是成功的情况,所有这里我踩了很多坑。下面就总结下坑的地方
步骤:
gitlab上的配置:
注意注意注意,重要的事情说三遍:坑的地方,上面是正常的成功流程,如果你出现错误了
错误提示:
#很多朋友使用最新版本的gitlab做自动部署时,在增加web钩子那一步,
#点击test push events时会报错:Url is blocked: Requests to the local network are not allowed
解决方法:一定要使用admin的账号进入设置
#这是因为新版的gitlab为了安全默认禁止了本地局域网地址调用web hook
#我们在设置里允许就行,具体步骤如下:
这里如果200就OK了......这里如果报错是 Hook executed successfully but returned HTTP 500 你就看看错误信息一堆的HTML错误,往下找会看到报错的详情~
还有一种错误是点击push events时转了很久,报错这个错误不好模拟,是因为你的虚拟机和gitlab的服务器通讯失败,虚拟机ping 物理机失败,这个超级简单自己解决!