大家好,我是高胜寒,一个在教培行业不忘初心的人,本文是【循序渐进学运维】DevOps工具篇的第2篇文章

【循序渐进学运维】DevOps工具篇 主要针对的是DevOps常用的工具,比如jenkins,gitlab, docker等工具的结合使用。

什么是集成

开发人员写代码,代码写完后直接给客户吗? 显然不是,客户需要的是软件而不是一堆代码,而一个软件不是一个开发完成的,是一个团队的开发完成的,这么多人的代码不可能自己组合一起, 所以当我们想把每个程序员写好的代码组合在一起,这个过程就叫做集成。

一个学员在做项目,他们的工作流程是,先开发一个月,一个月后,在召集团队里的精英来做集成,把最基本的流程跑通,通常需要花3-4天时间,如果改动量比较大,可能需要一两周时间。

既然一个月之后再集成,那为什么不把时间弄短点,比如一周集成一次。每天集成一次。时间越短,代码量越少,需要改动的也少,集成的难度会降低。
那如果在降低呢,比如2小时,半小时,有人尝试着让开发和集成同时进行,最终诞生了持续集成的想法。

持续集成的想法很好,但总不能有人提交了代码,就有个负责人去集成把,这种工作中肯定是行不通的,所以就有人编写了脚本,定期去源码服务器拉取代码,出现程序更新时,就自动完成构建。

这个脚本也慢慢发展,变成了工具,能够适用于大部分的开发语言。

什么是持续集成

持续集成(CI), 指的是,频繁的(一天多次)将代码集成到主干。
持续进程的目的,就是让产品可以快速迭代,同时还能保证高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试,只要有一个测试用例失败,就不能集成。

通过持续集成,一个开发团队可以快速的从一个功能到另一个功能,而我们之前提到的敏捷开发,很大一部分就是归功于持续集成。

持续集成的六个步骤:

在这里插入图片描述
代码从提交到部署到生产环境,一共经历了六个步骤:

  1. 提交
  2. 测试(第一轮)
  3. 构建
  4. 测试(第二轮测试)
  5. 部署
  6. 回滚
1. 提交

流程的第一步,主要是开发者向代码仓库提交代码,代码仓库或者叫代码托管平台,目前常见的有 github, gitlab, bitbucket,开源中国代码托管,coding.net,CSDN代码托管,京东代码托管

我们在公司里一般是搭建自己的gitlab,来进行代码管理。自己搭建在公司内部服务器,更加安全。当然 在github上用户也可以创建私有项目, 还要一些小公司会放在阿里云code代码托管平台上。

有个学员的公司,因为疫情在家办公,他刚入职,公司给发了VPN账号,可以登陆公司的SVN服务器,也可以把公司的代码资料都下载下来,刚要跟公司说这样不安全。
直到代码下载下来,看到代码后豁然开朗,这给别人,别人都不要,所以绝对安全。

2. 测试(第一轮)

代码仓库对commit操作配置了钩子(hook),只要提交代码或者合并到主干,就会跑自动化测试。

3. 构建

通过第一轮测试,代码就可以合并到主干,后面就可以进行交付了。
交付后,先进性构建(bulid),然后进入第二轮测试。所谓的构建,就是将源代码转换为事件的代码,比如安装依赖,配置资源(js脚本,图片)等等

4. 测试(第二轮测试)

构建完成进行第二轮测试,在第一轮中测试过的内容可以不用测试。也可以把构建放在最前面,把两次测试合并。

5. 部署

当第二轮测试结束,没有问题之后,当前的代码就 可以直接部署了,将当前版本的所有文件打包存档。 打包直接用tar打包即可, 然后发送到生产服务器。

  1. 回滚
    部署完成之后,进行在线访问测试,一旦发现当前版本有问题,就要回滚到上一个版本的构建结果, 可以使用我们之前学习过的符号链接,ln 来指向上一个版本。
持续集成的组成要素
  • 一个自动化构建过程,从检出代码,编译构建,运行测试,结果记录,测试统计等都是自动化完成的,无需人工干预
  • 在公司里,代码存储库,一般使用svn或者git。
  • 一个持续集成服务器,在公司我们用的最多的是jenkins。jenkins的配置和使用方法都很简单。

集成一定是集成团队的代码,而不是一个人的代码。

持续集成有什么好处
  • 快速返现错误,没完成一点就进行更新,集成到主干,可以很容易的发现和定位错误
  • 减少重复性的工作
  • 防止分支偏离主干,如果不做经常性的集成,主干一直在更新,会导致以后的集成难度变大。
总结

本文主要讲述了

  1. 什么是集成
  2. 什么是持续集成
  3. 持续集成的步骤
  4. 持续集成的优势

我是高胜寒,一个在教培行业不忘初心的人,下一篇文章,我们再见!

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐