Jenkins自动化构建成过程,可帮助咱们节省大量时间,完成这个过程的自动化后,在之后的开发过程当中,咱们须要作的,就是只是提交代码到版本库中,构建自动完成,基本再也不须要人工干预。java
代码仓库做为构建的素材库,构建所需的代码从代码库中得到。git
最好有一台服务器单独做为持续集成服务器,一方面保证了环境的纯净,一方面不影响开发,并且持续集成服务器通常是随时准备开始构建的,因此通常也不关机。web
[首先要有统一的代码库,服务器不断从版本控制服务器上检查代码状态,看代码是否有更新。若是发现有代码更新,那么就从版本控制服务器下载最新的代码。等代码彻底更新之后,调用自动化编译脚本,进行代码编译。而后运行全部的自动化测试,而且进行代码分析。若是其中任何一个步骤失败,就表示build失败,持续集成服务器会给予响应的反馈。每次代码提交以后,都会在持续集成服务器上触发一个定时构建,而后进行编译、部署。]
编程
[原则]vim
1.开发人员必须及时向版本控制库中提交代码,也必须常常性地从版本控制库中更新代码到本地;浏览器
2.须要有专门的集成服务器来执行集成构建。根据项目的具体实际,集成构建能够被软件的修改来直接触发,也能够定时启动,如每半个小时构建一次;tomcat
3.必须保证构建的成功。若是构建失败,修复构建过程当中的错误是优先级最高的工做。一旦修复,须要手动启动一次构建。服务器
4.不更新构建失败的代码maven
开发人员及时的提交代码进行构建是符合上述实践的,及时拉取代码能够防止工做中的分支偏离主干分支太多。定时触发构建或者经过检测代码的修改状况在触发构建都是能够的,主要是根及时的构建新的代码。若是构建失败,则必要及时处理致使失败的问题,修复后从新构建。固然构建失败的代码就不要拉到本地了,会污染一个原本是能够运行的工做区。分布式
[持续集成工具]
讲了这么多概念,有没一种工具把这种实践实现呢?固然有,常见的持续集成工具以下:
jenkins
travis
gitlab
buddybuild
仅列举了一些典型的,Jenkins 是传统型的工具,前身是 Hudson,04 年到如今已经有十多年的历史,后几个是最近几年出现的新一批,多少都和容器技术有点关系,这里咱们主要介绍 Jenkins,由于这个工具比较经常使用,各类开发实践均可以经过大量的插件来组合实现,可定制性好不少。
1
|
jenkins是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专一于更为重要的业务逻辑实现上。同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展现项目构建的趋势和稳定性。— 维基百科
|
Jenkins 有哪些功能呢?
1.定时拉取代码并编译
2.静态代码分析
3.定时打包发布测试版
4.自定义额外的操做,如跑单元测试等
5.出错提醒
基本上都是持续集成实践中的要求和周边的一些实现措施,如提醒功能等,出错后及时提醒开发者修复,Jenkins 中经过配置 SMTP 配置信息(这个通常的邮件服务提供商都有提供),邮件模板等,建立事件触发器,在事件(如编译失败)发生时,及时发送邮件通知开发者,挺方便的。
Jenkins 有不少种触发构建的方式,如 webhook,定时更新代码等,同时能够在触发构建后执行自定义的构建操做,经过编辑自定义的构建脚本,几乎能够进行任何构建操做。
图片理解:
1)齿轮:若是将java/maven/ant/git/tomcat/jenkins等软件比喻为齿轮,以下图
2)两个软件在一块儿能够驱动另一个软件,以下图
3)若是把这些软件要集成在一块儿工做,那么这个软件就能够存在其余软件的中间来驱动各个软件工做,以下图:
4)jenkins就是相似中间那个齿轮,来驱动其余软件的集成一块儿工做,以下图
某个博客的理解
[是什么]
jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使得持续集成编程可能。它的前身是hudson,是基于java开发的一种持续集成工具,它能够根据配置进行持续按期编译,运行相应的代码,将运行结果发送至邮件或者展现成报告等。
[为何]
jenkins做为持续集成的标志性工具,天然是有了持续集成的众多优势。jenkins能够作一些自动化的build,只要咱们把jenkins搭建成功,能够设置几分钟build一次,在定时自动build,验证单元测试,若是发生错误则把错误报告以email形式发送给项目模块负责人。
[宏观理解]
先来张图,大体理解下宏观:
详细介绍:
至于关于邮件的配置,也是为了方便咱们的开发和管理,jenkins很强大。
讲到这里,仍是“啊呀呀,完蛋,仍是有点不懂“的话,不如直接甩图(从网上copy下来的):
这里是选择Gitlab做为git server。Gitlab的功能和Github差很少,可是是开源的,能够用来搭建私有git server,也提供很是强大的web GUI,好比开发者互相review源代码的时候就会很方便。
系统的工做流程大概分为如下几步:
1> 开发者将新版本push到git server (Gitlab)。
2> Gitlab随后触发jenkins master结点进行一次build。(经过web hook或者定时检测)
3> jenkins master结点将这个build任务分配给若干个注册的slave结点中的一个,这个slave结点根据一个事先设置好的脚本进行build。这个脚本能够作的事情不少,好比编译,测试,生成测试报告等等。这些本来须要手动完成的任务均可以交给jenkins来作。
4> 咱们在build中要进行编译,这里使用了分布式编译器distcc来加快编译速度。
notes
jenkins的工做原理是:先将源代码从gitlab中拷贝一份到本地,而后根据设置的脚本进行build。咱们能够看出,整个系统的关键就是那个build脚本,用来告诉jenkins在一次集成中须要执行的任务。
不过我以后是用的Github做为git server。但其实差很少,先讲到这里,重点难点仍是在以后jenkins的安装配置使用上。
Jenkins官网最新稳定版:
https://pkg.jenkins.io/redhat-stable/
1.下载依赖
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
2.导入秘钥
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
3.安装
yum install jenkins #等待安装时间较长,约25min
jenkins安装完毕
4.启动前检查是否已安装jdk
java #显示java参数即证实已安装jdk
5.查找jenkins安装路径
rpm -ql jenkins
jenkins安装路径
jenkins相关目录释义:
(1)/usr/lib/jenkins/:jenkins安装目录,war包会放在这里。
( 2 ) /etc/sysconfig/jenkins:jenkins配置文件,“端口”,“JENKINS_HOME”等均可以在这里配置。
(3)/var/lib/jenkins/:默认的JENKINS_HOME。
(4)/var/log/jenkins/jenkins.log:jenkins日志文件。
6.配置jenkins
(1)查找jenkins端口
vim /etc/sysconfig/jenkins:set ignorecase/jenkins_port 回车
查找到jenkins端口为8080
(2)查看其余端口占用状况
netstat -ntlp
显示已被占用端口
被占用端口与jenkins端口8080无冲突,便可进入下一步启动jenkins
(3)启动jenkins
java -jar /usr/lib/jenkins/jenkins.war --httpPort=8080
(4)修改jenkins端口
若默认8080端口未被占用,可不修改
若端口已被占用,则修改端口为其余端口,并将对应端口开放
#端口改成8899java -jar /usr/lib/jenkins/jenkins.war --ajp13Port=-1 --httpPort=8899
#启动java -jar /usr/lib/jenkins/jenkins.war --httpPort=8899
启动完成
(5)验证jenkins可否打开
在宿主机浏览器输入http://IP:Port
我这里输入:http://192.168.114.128:8080
(修改端口后输入:http://192.168.114.128:8899)
进入jenkins解密界面
cat /var/lib/jenkins/secrets/initialAdminPassword
获取密码
=>获取密码=>输入密码=>继续
=>安装插件=>retry几回可安装成功
=>注册帐号 (记录好帐号密码)
=>开始使用Jenkins
getting started