一个典型的DevOps流程涵盖需求、计划、编码、构建、测试、发布、运营等多个环节,DevOps通过增强团队间的协助和沟通,构建自动化持续交付流水线,达到快速交付和安全可控的目的。
现代化的应用架构,尤其是微服务应用架构,基本都是分布式的应用架构。分布式架构会带来交付和运维的复杂性,增加交付和运维的难度。容器技术可以使软件交付标准化,容器技术可以满足分布式应用交付的需求。
DevOps落地过程中,最关键的,也是最大挑战的是构建自动化持续交付流水线。自动化持续交付流水线涉及到代码管理(代码提交、代码静态分析、编译、构建、打包、单元测试等)、代码集成、部署、发布等环节,涉及到的工具主要包括代码管理工具、CI等。
代码管理工具主要有2类:
1、集中式代码管理工具,如CVS、SVN、ClearCase、VSS等,最大的缺点是必须联网,无法单机工作。
2、分布式代码管理工具,如Git,每个计算机都是一个完整的仓库,可以离线工作。
Git的主要工作流有三种:
1、Git flow,长期存在2个长期分支(主分支Master、开发分支Develop)和三种短期分支(功能分支feature、补丁分支hotfix、预发分支release branch),基于版本发布,不适合“持续发布”模式。
2、GitHub flow,只有1个长期分支(主分支Master),特别适合“持续发布”模式。
3、GitLab flow,结合2者优点,只保留一个主分支Master,采用“上游优先”原则,开发环境分支是Master,预发环境和生产环境都是下游分支。