一、Jenkins简介
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成(CI)工具,用于解决持续重复的部署、监控工作;它一个开放易用的软件平台,大大简化软件的持续集成。
目前持续集成(CI)已成为许多软件开发团队的常见做法。它是一种实践,旨在缓和和稳固软件的构建过程,并且能够帮助您的团队应对如下挑战:
a. 软件构建自动化 :配置完成后,CI系统会依照预先制定的时间表,或者针对某一特定事件,对目标软件进行构建。
b.构建可持续的自动化检查 :CI系统能持续地获取新增或修改后签入的源代码,也就是说,当软件开发团队需要周期性的检查新增或修改后的代码时,CI系统会不断确认这些新代码是否破坏了原有软件的成功构建。这减少了开发者们在检查彼此相互依存的代码中变化情况需要花费的时间和精力(说直接一点也是钱啊,呵呵)。
c. 构建可持续的自动化测试 :构建检查的扩展部分,构建后执行预先制定的一套测试规则,完成后触发通知(Email,RSS等等)给相关的当事人。
d. 生成后后续过程的自动化 :当自动化检查和测试成功完成,软件构建的周期中可能也需要一些额外的任务,诸如生成文档、打包软件、部署构件到一个运行环境或者软件仓库。这样,构件才能更迅速地提供给用户使用。
部署一个CI系统需要的最低要求是,一个可获取的源代码的仓库,一个包含构建脚本的项目。
其主要用于:
1、持续的软件版本发布/测试项目。
2、监控外部调用执行的工作。
二、安装Jenkins
1、在服务器直接下载jenkins的war包
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
但是从海外的服务器下载非常慢,还经常失败;所以一般先在windows下载好war包(虽然也很慢,但是错了可以继续下载,而且并发操作不影响其他步骤,而且一次下载多次使用…),再传到服务器
#Tips-提高下载速度小技巧1:
电脑连手机热点,手机再打开vpn,服务节点最好选择美国;当然如果电脑有vpn就更方便了。
#Tips-提高下载速度小技巧2:
从阿里云开发者社区下载:
https://developer.aliyun.com/mirror/
2、在本地下载jenkins的war包
2)jenkins版本与jdk版本有对应,所以下载的第一步是看系统的jdk版本是多少?再找对应的jenkins。
下载页是最新的jenkins-2.361.1,要求jdk版本11或者17,我们系统是jdk8,所以一开始我就安装不上
jenkins过往版本的下载入口如下图
而且这里很贴心的写了jenkins对应的jdk版本
3、在linux部署jenkins
法一:jenkins本质上就是一个war包,和在linux部署普通项目类似;一般是找一个tomcat,把war包放在webapp中,启动tomcat即可。
法二:jenkins因为war包中也包含了tomcat,所以也可以像jar包一样部署,下面介绍一下这种部署方式。
1)上传jenkins.war,我这里是在usr下
在jenkins所在目录新建一个日志文件
vim nohup.out
保存退出
:wq
2)安装并启动Jenkins;因为jenkins默认端口是8080、一般都被占用了,这里用特定端口启动
#后台启动命令
nohup java -jar jenkins.war --httpPort=8095 >/usr/lib/jenkins/nohup.out &
#ctrl+c退出后,可以查询启动日志
tail -fn 200 nohup.out
3)在浏览器输入http://ip:8095,看到如下界面表示jenkins安装成功。
4、登录jenkins客户端,做基础配置
1)第一次登录需要使用初始密码。
密码在启动日志中就会打印出来,所以建议在启动时,打开实时日志(或者启动完打开日志文件夹中的catalina.out查看),就可以比较简单的找到初始密码。
当然,也可以在Jenkins指定的initialAdminPassword文件中查看
vim /root/.jenkins/secrets/initialAdminPassword
2)复制密码,返回浏览器将密码填入,然会点击“继续”,进入一下也页面,
我一般是“选择插件安装”,只选很少几个,后面有需要的再安装,这样可以节省时间。
当然选择“安装推荐的插件”,也可以。
下一步
这里插件即使没有安装成功也没有关系,后面可以补。可以在jenkins的客户端插件管理中自动下载,也可以从网上下载好插件安装上去,这里提供一下jenkins插件下载地址:
https://plugins.jenkins.io/
3)安装完成后,点击继续(如果有一两个没下载完,安装完成后也可以下载),创建用户
4)创建完成后点击“保存并完成”,一直点击“继续”,到下面界面点击“开始使用Jenkins”
5、插件安装失败解决方式
1)插件安装失败,大多都是jenkins版本与插件版本不对应导致的;如果可以安装最新版的jenkins,一般都不会有插件安装失败的问题,即使失败重新安装一下就好了。
但是现实中,公司服务器的jdk是很多项目在用,你不能随便改版本;所以只能安装匹配当前jdk版本的jenkins,进而就可能导致推荐的插件安装不上。
而且jenkins的插件,相互之间是有依赖关系的,于是有些插件安装失败会导致另外一些插件也安装失败…如此往复,会导致很多插件都安装失败,重试也不行。因为不是网络原因导致的,所以网上很多回答说,换插件下载地址是解决不了这个问题的。
2)这种情况,只有通过降低插件的版本来解决。
首先,要尽可能安装最新的jenkins,这样就不会有插件安装失败的问题;如果不行,就安装当前jdk支持的最新版本jenkins。比如,我们公司测试服务器装的是jdk1.8,jenkins支持jdk1.8的最新版本是2.356,再往后就不支持1.8了,那么就按照jenkins2.356;
其次,在jenkins插件管理中,提供的都是最新的插件,安装低版本需要在插件市场下载好、手动上传来安装。
3)比如你要安装插件Pipeline插件,发现最新的插件安装不上
这时你就可以点击就进入了jenkins专门的插件网站;然后选择release进入历史版本页,因为没有插件与jenkins的版本对应关系(我没找到),所以需要根据你安装版本大致估计需要往前多少;比如我安装的是jenkins2.356,那么我就下载2年前的版本;点击derect link就可下载。
然后在jenkins插件管理的"高级"页签下,找到手动安装,把刚才下载的hpi文件上传,点deploy部署即可
5)需要注意的是,插件相互之间有依赖关系,比如我要安装一个SSH插件,它需要先安装Credentials,再安装trilead Api,再安装SSH插件;如果前面的插件你没有,它会自动先安装前面的,而且是最新的。又因为你最新的安装不了(比如我),所以导致SSH安装失败。
这个时候,你要根据安装报错,按先后顺序安装。
还有就是,我安装了一个1.0.11的trilead Api,接着安装SSH,这时安装失败;报错信息说,当前这个SSH插件要求的trilead Api版本最低是1.67。那么我就需要再去找trilead Api1.67重新安装,1.67装好了、再安装后边的。
有点繁琐,但是大家也不用太担心,因为必须要安装的插件没有几个;而且这些插件的前置插件都差不多;比如Credentials,这个是证书库插件,基本每个插件都需要依赖它,但是你只要安装过一次,后面就不用再管了。
6)这里总结几个必须要的插件
Subversion 我的源码在svn上,如果源码在git上就必修要git插件;
publish over ssh 远程连接服务器
Maven Integration 多数项目需要用到maven部署
NodeJS 部署vue前端要用
三、linux环境配置
jenkins自动部署,本质上就是把代码拉取到服务器,然后打包;再把包发到指定的位置,可能在当前服务器、也可能需要传到远程服务器;最后启动。
所以为了支持打包等任务,需要在部署jenkins的服务器上安装一些项目管理工具,如后端java项目一般需要安装jdk和maven,前端vue项目需要安装nodejs,安装完成后再在jenkins全局变量中配置这些工具的信息。
在linux环境安装maven和nodejs这里就不展开说了,下面说一下,安装好之后(可能你们公司的服务器本来就有这些工具),jenkins还需要做那些配置。
1、在jenkins客户端-全局配置中,配置jdk信息
2、在jenkins客户端-全局配置中,配置maven信息
如果没有Maven配置的地方,说明Maven插件没有安装成功,先去安装插件。