Jenkins对于开发者而言,应该不会陌生。在软件开发、部署阶段,为了实现自动化,大家都会首选Jenkins工具来完成构建自动化,是开发中不可缺少的一部分。本系列《Jenkins实战》文章将会介绍在实际工作中,Jenkins是如何使用、如何发挥它的作用的,如何协助我们更为高效的工作。这也算是一种工作记录总结吧,与大家一起分享。
一、Jenkins是什么
Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。并且提供了非常有好的操作界面,主要用于持续、自动构建/测试软件项目、监控外部任务的运行。
通常与版本管理工具、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。
官网:https://jenkins.io
它有如下特性:
- 开源的java语言开发持续集成工具,支持CI,CD;
- 易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理;
- 消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告;
- 分布式构建:支持Jenkins能够让多台计算机一起构建/测试;
- 文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等;
- 丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven,docker等。
二、CI/CD是什么
在使用或提及到Jenkins时,会常常听到CI、CD这两个术语,在此,有必要单独介绍说明一下,以备后续章节提及时不再迷茫。
1. CI (持续集成)
CI(Continuous Integration),中文叫法是持续集成,是是一个让开发人员将工作集成到共享分支中的过程,从而增强写作开发。
持续集成强调开发人员提交了新代码之后,立即进行构建、测试。根据测试结果,我们可以确定新代码和原有代码是否正确地集成在一起。
如下图所示过程:
2. CD(持续交付)
CD(Continuous Delivery),中文叫法是持续交付,是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境中(如:准生产环境)。
比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。下图反映的是CI/CD 的大概工作模式。
三、Jenkins安装
1. 准备工作
以下是Jenkins官方对安装服务器、软件的建议要求。
- 机器要求:
- 256 MB 内存,建议大于 512 MB
- 10 GB 的硬盘空间(用于 Jenkins 和 Docker 镜像)
- 需要安装以下软件:
- Java 8 ( JRE 或者 JDK 都可以)
- Docker
我这里将准备的是在CentOS 7.5环境上,采用非docker方式进行安装。
2. 安装JDK1.8
如果已经安装,请忽略该步骤。
执行命令yum install -y java-1.8.0
进行安装:
[root@xcbeyond ~]# yum install -y java-1.8.0
3. 安装Jenkins
1)执行wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
来获取jenkins.repo
。
[root@xcbeyond ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
[root@xcbeyond ~]# rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
如果之前导入过jenkins key
,执行rpm --import
将会失败,可以忽略。
2)执行yum install jenkins
命令来安装Jenkins。在安装的过程中会下载一些rpm
包,会比较慢,请耐心等待安装完毕即可。
[root@xcbeyond ~]# yum install jenkins
3)执行systemctl start jenkins
命令来启动Jenkins。
[root@xcbeyond ~]# systemctl start jenkins
4)执行ps aux | grep jenkins
命令来查看Jenkins的启动状态、及启动时的一些参数。
[root@xcbeyond ~]# ps aux | grep jenkins
jenkins 6212 208 2.4 5535708 197740 ? Ssl 19:33 0:41 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
root 6264 0.0 0.0 112720 980 pts/0 S 19:33 0:00 grep --color=auto jenkins
通过查看Jenkins的启动状态,可以知道Jenkins的默认安装目录(JENKINS_HOME)位于/var/lib/jenkins
,日志位于/var/log/jenkins/jenkins.log
4. 初始化、配置Jenkins
截止目前,只是完成了Jenkins的基础安装,要想能够使用,还需登录到Web页面进行初始化、配置。
1)首次访问,登录。
打开浏览器,访问地址ip:8080
,其中ip为安装Jenkins服务器的真实ip。
注意:如果ip:8080
访问不了,可能是由于8080端口没有对外开放,可以将Jenkins服务器的防火墙关掉。
[root@xcbeyond ~]# systemctl stop firewalld.service
页面上提示需要输入管理员密码,在/var/lib/jenkins/secrets/initialAdminPassword
中找到密码,输入密码,点击【继续】按钮,进行初始化,稍等片刻,将会进入“新手入门”页面。
2)安装插件。
在这里我选择【安装推荐的插件】,完成选择Jenkins插件即可,如下图所示:
接下来就开始进行插件安装,耐心等待,直到完成,点击【继续】操作。(这个过程比较慢,喝杯茶,等待...)
(安装过程中,可能有部分插件安装失败,你可以选择【重试】或者【继续】操作,因为插件在后续使用的过程中也是可以在陆续安装的。)
3)创建管理员用户,点击【保存并完成】。
4)实例配置。
提示配置Jenkins URL,这里保持默认即可,继续点击【保存并完成】。
至此,Jenkins已安装就绪,可以正常使用了。
参考文章:
- https://jenkins.io/zh/doc/
- https://pkg.jenkins.io/redhat-stable/