CI/CD--持续集成和持续部署

历史介绍

初期:

在开始软件发布新的版本的时候都是纯手工建的,它会规定在周内的哪个时间发布一个新版本。过程:开发人员先合并代码,当合并代码完成之后测试人员开始进行测试,当测试通过之后才会发布一个部署包,然后运维的人开始进行部署。整个过程可能会持续到凌晨两三点。而且,可能在软件上线之后还会出现各种各样的Bug,
缺点:耗时耗力,不能保证软件上线后能正常运行

进化1:引入构件工具:

为了解决这样部署的引入得身体问题以及软件质量问题,就引入了Jenkins的CI,他不要规定发布版本的时间 ,但是它需要提交好发布版本的现场要求。管理上要求研发人员要写单元测试,测试人员要写集成测试,现场的工作人员拿到东西后先进性冒烟测试,当主要的功能都通过测试之后才进行下一步。
优点:大大降低了返工率,
缺点:工作量相比之前多了很多。

进化2:引入指标;

由于团队人员水平的层次不齐,并不是每个人都能做好单元测试和集成测试,所以必须要通过量化的考核制度进行管理。此时就会加入一些工具Sonar,通过他来监督工作质量。(Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具)
优点:保证了工作质量

进化3:持续集成(CI:CIcontinuous integration):

持续集成: 频繁地(一天可以很多次)将代码集成到主干,通过持续集成流程的进行自动化方式的构建,编译和测试,提供可以部署发布的单元包

持续集成的目的:就是让产品可以快速迭代,同时还能保持产品的高质量。

核心措施:代码集成到主干之前,必须通过自动化测试。但是只要有一个测试用例失败,就不能集成。它保证了集成的的正确性

持续集成的优点:
1、降低风险,由于持续集成不断去构建,编译和测试,可以很早期发现问题,所以修复的代价就少;
2、对系统健康持续检查,减少发布风险带来的问题;
3、减少重复性工作;
4、持续部署,可以不断的提供可部署单元包;
5、持续交付可供使用的版本;
6、增强团队信心;

CI/CD存在的原因

在开始的时候,软件发布的版本都是有开发人员手工构建的,这样不仅耗时,不方便,而且也不能保证发布的版本能够正确的运行。而且开发人员会经常集成他们的代码,通常是一天集成一次,那么每个开发人员都要去集成自己的代码,而每一次集成自己的代码都要经过编译,发布,自动化测试来验证,从而发现集成是否有的错误。所以整个过程会很费时费力。因此引入了持续集成和持续部署(CI / CD),这样开发人员可以随时集成他们的代码,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误,而且这个过程可以大大减少集成的问题,让团队能够更快的开发软件。

持续集成(CI)的三大环节:版本控制、Jenkins、交付物管理

版本控制

最开始用的CVS,到中期的SVN,再到现在的Git,他们都具有版本控制的代码库。
现在很多人都在用github进行代码的托管,所以说一下github的优点,
第一:可以通过webhock(钩子)触发jenkins实现自动化部署;
第二:丰富的API可以与其他项目集成;
第三:对于以软件研发为重要业务的公司还可以用github做为自己的认证中心。
注意:
1.CVS(Concurrent Versions System)版本控制系统是主要用于在多人开发环境下源码的维护。
2.SVN是Subversion的简称。是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。
3.Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。

Jenkins

jenkins的前身是hudson,后来被Oracle收购,然后他们团队又自己写了一个Jenkins。Jenkins支持Maven,测试工具和容器。Jenkins输入是代码版本,输出是发布包,中间主要有两类构建方式。第一种是利用Jenkins的插件,需要提前配置好;第二种是用shell脚本调本机的mvn等命令,这种方式更灵活,但是对使用者要求会比较高。

交付物管理

有Nexus和Artifactory这两种,他们的目的主要为了维护发布包的版本。交付物随着技术的更新也出现了不同的理解,例如一个jar包或者war包是交付物,一个.deb是交付物,甚至一个image也是交付物。
注意:

  1. Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。利用Nexus你可以只在一地方就能够完全控制访问 和部署在你所维护仓库中的每个
  2. Artifactory是一个Maven企业库。它提供先进的代理、高速缓存和安全设施,来供一个强大、独立的重复性和环境建设的Maven所使用。

持续集成的步骤:

通过Git或其他工具拉取代码->自动化构建->自动化编译->自动化测试->自动化部署->自动化发布->邮件发送通知;
https://www.cnblogs.com/both-eyes/p/10695278.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值