持续集成

[首先要有统一的代码库,服务器不断从版本控制服务器上检查代码状态,看代码是否有更新。如果发现有代码更新,那么就从版本控制服务器下载最新的代码。等代码完全更新以后,调用自动化编译脚本,进行代码编译。然后运行所有的自动化测试,并且进行代码分析。如果其中任何一个步骤失败,就表示build失败,持续集成服务器会给予响应的反馈。每次代码提交之后,都会在持续集成服务器上触发一个定时构建,然后进行编译、部署。

 

最好有一台服务器单独作为持续集成服务器,一方面保证了环境的纯净,一方面不影响开发,而且持续集成服务器一般是随时准备开始构建的,所以一般也不关机。

 

Jenkins 有哪些功能呢?

1.定时拉取代码并编译

2.静态代码分析

3.定时打包发布测试版

4.自定义额外的操作,如跑单元测试等

5.出错提醒

基本上都是持续集成实践中的要求和周边的一些实现措施,如提醒功能等,出错后及时提醒开发者修复,Jenkins 中通过配置 SMTP 配置信息(这个一般的邮件服务提供商都有提供),邮件模板等,创建事件触发器,在事件(如编译失败)发生时,及时发送邮件通知开发者,挺方便的。

Jenkins 有很多种触发构建的方式,如 webhook,定时更新代码等,同时可以在触发构建后执行自定义的构建操作,通过编辑自定义的构建脚本,几乎可以进行任何构建操作。

图片理解

1)齿轮:如果将java/maven/ant/git/tomcat/jenkins等软件比喻为齿轮,如下图
齿轮_logo

2)两个软件在一起可以驱动另外一个软件,如下图
两个齿轮_logo

3)如果把这些软件要集成在一起工作,那么这个软件就可以存在其他软件的中间来驱动各个软件工作,如下图:
多齿轮_logo

4)jenkins就是类似中间那个齿轮,来驱动其他软件的集成一起工作,如下图
多齿轮+标记_logo

某个博客的理解

[是什么]

jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使得持续集成编程可能。它的前身是hudson,是基于java开发的一种持续集成工具,它可以根据配置进行持续定期编译,运行相应的代码,将运行结果发送至邮件或者展示成报告等。

[为什么]

jenkins作为持续集成的标志性工具,自然是有了持续集成的众多优点。jenkins可以做一些自动化的build,只要我们把jenkins搭建成功,可以设置几分钟build一次,在定时自动build,验证单元测试,如果发生错误则把错误报告以email形式发送给项目模块负责人。

[宏观理解]

先来张图,大致理解下宏观:

jenkins宏观_logo

详细介绍:

详细介绍jenkins1_logo

详细介绍jenkins2_logo

详细介绍jenkins3_logo

详细介绍jenkins4_logo

至于关于邮件的配置,也是为了方便我们的开发和管理,jenkins很强大。

讲到这里,还是“啊呀呀,完蛋,还是有点不懂“的话,不如直接甩图(从网上copy下来的)

系统结构_logo

这里是选择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的安装配置使用上。

posted @ 2017-06-12 14:44  飞教主  阅读(216)  评论(0编辑  收藏  举报