创业公司之技术体系建设 -CI/CD

用户头像
星际行者
关注
发布于: 10 小时前
创业公司之技术体系建设-CI/CD

CI/CD是比较成熟的技术,基本上各个公司都基于开源的产品,建成了自己的CI/CD系统进行构建、部署。做为前文的后续,这里我们展开讨论一下设计CI/CD的要点。





如上图,这是一个完整的部署流程,CI/CD建设的一个要点是,是否开放给研发操作。很多公司CI/CD能力并不开放给研发,上线全部由运维负责。这里我们讨论CI/CD能力开放给研发需要考虑的事情。

 

一、向研发开放CI

项目构建需要开发构建Pipeline无需多说,目前开发Pipeline有两种常见方法:

  1. 以Jenkins为代表的CI工具,在Jenkins里编写Pipeline脚本。

  2. 以Gitlab CI为代表的新型工具,在项目代码里添加pipeline脚本。

 

无论使用上述哪种方法都面临一些问题:

  1. 研发是否具有能力开发Pipeline。

  2. 如何保证公司级技术规范贯彻执行,比如构建过程中进行代码质量检查、漏洞扫描、自动化测试等等。如果由研发构建Pipeline,真难保证这些规范被严格执行。使用Jenkins类的CI工具还可以由运维帮助编写Pipeline,如果用Gitlab CI/CD这类的工具,完全由研发编写Pipeline就很难进行管控了。

 

二、向研发开放CD

从研发的角度来说,当然希望不需要通过运维就可以进行上线操作,但存在一些细节问题需要进一步考虑: 

  1. 如何做上线审批,Jenkins这类的工具,执行过程中,可以引入确认动作,当确认后才能执行后续动作,但具体的一个项目需要谁来进行授权后才可以进行部署,这种细粒度的控制比较难实现。



  1. 如何做运行时环境管理,通常程序运行时需要一些外部依赖,比如环境变量、资源配额。如果开放CD由研发上线,研发可能随意调整这些参数,引发全局性问题出现,如何防止这种情况也是要考虑的。

 

三、CI/CD整合

CI过程中构建出来的制品信息如何传递给CD环节,也是要考虑的,以ArgoCD为例,ArgoCD对一个项目的部署配置存储在Git上,每次部署时,都需要在Git上修改要运行应用所对应的Docker Image名称。CI到CD过程并不连贯,如何连贯的进行操作,尤其是在多人协同下,也是要处理的问题。

 

四、总结

总体来讲,目前开源的CI/CD系统,交互方面偏弱,针对公司个性化场景扩展能力偏弱。如果由运维负责上线操作还好,如果开放给研发操作就会面临各种细节问题,所以很多公司都基于开源的CI/CD系统定制自己的发布上线系统,甚至整合到自己的Paas平台中。


系列文章

一、创业公司之技术体系建设

二、创业公司之技术体系建设-CI/CD



发布于: 10 小时前 阅读数: 44
用户头像

星际行者

关注

编程多年依旧热爱。。。 2019.03.28 加入

还未添加个人简介

评论 (1 条评论)

发布
用户头像
现在小城市企业小老板,根本不愿意掏钱CI/CD,或者天真认为“配一下”就好了
9 小时前
回复
没有更多了
创业公司之技术体系建设-CI/CD