CI/CD

作者: stack | 来源:发表于2021-07-23 15:56 被阅读0次

    CI / CD 主要指的三个概念,首先CI代表的意思是,continuous integration(持续集成)。其次是CD,CD有两层含义,一种是continuous deployment(持续部署),另一个是continuous delivery(持续交付)。CI/CD 主要介绍的是在整个app的生命周期中的自动化和持续的监控过程, 从集成,交付前的测试,以及部署. 

    CI在CI/CD中通常是对于开发者来说的一个概念,将开发过程中以下步骤:构建,测试,分支合并由自动化的方式来代替。CI的最大的好处,就是能够让开发者能够频繁提交代码,而不是等一整个feature开发完了之后在提交代码。这样就可以尽可能的避免codebase的冲突,并且提交代码之后,会trigger CI pipeline上的一些操作。构建app,unit test,integration test。在任何一个环节出现了问题,都可以尽早发现bug,并尽早地修复bug。这些就都以自动化的方式现实,提高了app的开发效率。但是也有一些cons. 比如说团队中需要devops这样的一个角色,据我所知,在国内的大多数公司,ops(operation)这个岗位都是和开发人员分开的。也就是说ops只管ops的事,dev只操心dev的事。所以CI的过程无形就是提高了对团队内成员的要求,需要ops也具备一些dev的经验。

    CD在CI/CD中是两个概念,为什么会将这两个过程都统称为CD呢?是因为他们都是在pipeline上的两个不同的stage,有一些概念在某些情况下还能互换。对于continuous delivery的好处就是可以随时都有ready for production的codebase(经过了之前的continuous integration),类似于ops可以一键部署生产。对于continuous deployment来说呢,最大的好处,就是整条pipeline只要建设好了,每一次的代码的变动都会被自动部署到生产,也就是说每次的小步部署,可以最大程度的减少错误的影响范围相比于整体功能一步提交。

    概念图

    总结一下pros就是,可以缩短app的开发周期(快速迭代),减少人的手工测试,提高代码质量,小步提交,减少大的错误影响,容易回滚。

    cons.,代码测试场景如果覆盖不全,那么一步部署到生产之后,可能会有边缘场景的oops。对于微服务来说的话,也有一定的影响,如果一旦一个服务有问题的话就会影响到其他服务,产生多米诺骨牌效应。对于容灾的响应速度应该来说要求更快,否则容易出现功能的阻塞。

    一些常用的CI/CD工具:

    Jenkins, spinnaker, gocd, concourse-ci, screwdriver cons. and pros.

    相关文章

      网友评论

          本文标题:CI/CD

          本文链接:https://www.haomeiwen.com/subject/nerlmltx.html