Jenkins简介
Jenkins简介
Jenkins自动化部署可以解决集成、测试、部署等重复性的工作,工具集成的效率明显高于人工操作;并且持续集成可以更早的获取代码变更的信息,从而更早的进入测试阶段,更早的发现问题,这样解决问题的成本就会显著下降:持续集成缩短了从开发、集成、测试、部署各个环节的时间,从而也就缩短了中间出现的等待时间;持续集成也意味着开发、集成、测试、部署得以持续。。
使用Maven(Ant)等来实现lava项目自动化构建发布部署。这些工具可以帮助在构建过程中实现自动化发布、回滚等动作。
1、简介
Jenkins是一个用Java编写的开源的持续集成工具。官方网站:https://jenkins.io/
Jenkins能实时监控持续集成过程中所存在的问题,提供详细的日志文件和提醒功能,还能用图表的形式,形象地展示项目构建的趋势和稳定性。
2、特点
易安装:仅仅一个jenkins.war,丛官网下载该文件后,直接运行,无需额外的安装,
更无需安装数据库;
易配置:提供友好的GUI配置界面;
变更支持:Jenkins能从代码仓库(SVN/Git)中获取并产生代码更新列表,并输出到编译输出信息中;
支持永久链接:用户是通过Web来访问Jenkins的,而这些Web页面的链接地址都是永久链接地址,可以在各种文档中直接使用该链接;
集成E-Mail/RSS/M:当完成一次集成时,可通过这些工具实时收取集成结果(构建-次集成需要花费一定时间,有了这个功能,就可以在等待结果过程中,干别的事情);
JUnit/TestING测试报告:也就是用以图表等形式提供详细的测试报表功能;
支持分布式构建:Jenkins可以把集成构建等工作分发到多台计算机中完成;
文件指纹信息:Jenkins会保存构建集成所产生的jars文件、集成构建使用了哪个版;
支持第三方插件:Jenkins支持第三方插件,这使得Jenkins功能变得越来越强大;
3、持续集成(CI)
含义:频繁的(一天多次的)将所有开发者的工作合并到主干上。
持续集成的核心在于确保新增的代码能够与原先代码正确的集成。与后续要介绍的持续交付以及持续部署,其最主要的差别也就在于其目标不同。
不过持续集成的流程还存在一定的异议:上图所示的流程为 Build -> Test,在阮老师的教程里头是 Test -> Build。不过,持续集成本身只不过是一种软件工程的方法或者策略,其并不规定具体的实现。在实际的应用中,还是需要结合具体的开发语言或者工具来定。
持续集成的优势
易于定位错误:每一次的代码集成都需要执行相关的测试工作,持续集成频繁的集成次数天然的将复杂的代码逻辑切割为了小块,也就使得每一次测试中遇到的错误能够更加容易的被定位;
易于控制开发流程:更为细致的工作提交也就意味着更容易判断当前的工作进度,这对于管理者规划开发流程而言提供了一个有效的参考,同时也为开发人员省下了汇报工作的时间;
易于减少不必要的工作:build 以及 test 过程的自动化可以为你节约一大票的时间,从而投入到有价值的工作中去
4、持续交付(CD)
持续交付 指的是:一种能够使得软件在较短的循环中可靠的发布的软件工程方法。
与持续集成相比,持续交付的侧重点在于 交付,其核心对象不在于代码,而在于可交付的产物。由于持续集成仅仅针对于新旧代码的集成过程执行了一定的测试,其变动到持续交付后还需要一些额外的流程。
5、持续部署(CD)
持续部署即在持续交付的基础上,把部署到生产环境的过程自动化。
6、Maven介绍
Maven项目对象模型(POM)是可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。
Maven除了以程序构建能力为特色之外,还提供高级项目管理工具。由于Maven的缺省构建规则有较高的可重用性,所以常常用两三行Maven构建脚本就可以构建简单的项目。
由于Maven的面向项目的方法,许多Apache Jakarta项目发文时使用Maven,而且公司项目采用Maven的比例在持续增长。
7、传统网站部署流程
在运维过程中,网站部署是运维的工作之一。传统的网站部署的流程大致分为:需求分析->原型设计->开发代码->提交代码->内网部署->内网测试->确认上线->备份数据->外网更新->外网测试->发布完成。如果在内网测试时发现代码有异常,返回代码开发人员名字,调整代码;如果在外网测试时发现外网部署的代码有异常,可以及时进行网站回滚。
手动上线步骤:
开发人员发起代码上线的需求(邮件中包含开发做好的WAR包)-)运维人员连接线上负载调度器(Nginx)-->隔离一组服务器(Tomcat)-->连接服务器(Tomcat)-->备份旧代码(tar打包)-->删除旧代码目录-->上传新的WAR包-->外网测试-->测试不通过则通过备份回滚代码-->测试通过则利用rsync的脚本推送代码到其他服务器-->统一外网测试->连接调度器恢复隔离机制-->隔离另一组服务器实施上线步骤-->上线完成。
8、目前主流网站部署流程
通过Hudson/Jenkins工具平台实现全自动部署+测试,是一个可扩展的持续集成引擎,属于开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins非常易于安装和配置,简单易用。
开发人员:写好代码,不需要自己进行源码编译、打包等工作,直接将代码分支存放在SVI、Git仓库即可。
运维人员:减轻人工干预的错误率,同时解放运维人员繁杂的上传代码、手动备份、更新等操作。
测试人员:可以通过Jenkins进行简单的代码及网站测试
9、Jenkins的工作原理
是先将源代码从SVN/Git版本控制系统中拷贝一份到本地,然后根据设置的脚本进行build(构建)。整个系统的关键就是build脚本,build脚本告诉Jenkins在一次集成中需要执行的任务。