代码管理与软件部署——从Git Flow到DTAP

栏目:典故 来源:济南都市网 时间:2019-10-06

缺失的拼图

软件开发过程中,代码的版本管理(Version Control)、构建部署(Build & Deployment) 是大部分研发团队必须面对的工作。

讲这两个概念的文章非常多,但很少有人专门把这两件事放在一起讲。我相信不是没有需要,而是不存在标准的流程,各个公司,甚至同一公司的每个团队都不一样。


版本管理

首先来看一下版本管理,现在Git比较流行,个人、小团队的项目,可以使用免费的Github管理,如果想防止隐私数据泄露,可以自建服务使用Gogs。公司内部可以使用GitLab、或Bitbucket。

Github提供了一个简化的工作流程,称为GitHub flow,小型项目可以凑合用着,但对于大型、多版本、多人协作、高发布频次的项目来说,完全不够用。

https://guides.github.com/introduction/flow/


Git Flow最初是由 Vincent Driessen 提出的,请参考 https://nvie.com/posts/a-successful-git-branching-model/

这套强大的流程被很多公司所推崇,可以搞定大部分复杂需求的项目。


构建与部署

构建部署的工作,按阶段来划分,可分为持续集成(Continuous Integration),持续交付(Continuous Delivery)和持续部署(Continuous Deployment)。

下图来自 https://www.atlassian.com/continuous-delivery/principles/continuous-integration-vs-delivery-vs-deployment


可以发现,Integration阶段,需要部署到Test环境,Delivery阶段,部署到Staging环境,Deployment阶段部署到线上生产环境。

代码编写阶段,是先于部署的,一般情况下,开发者是在自己电脑上(本机Local)进行代码编写、编译、运行、自测试的,也会在“开发”环境(Development)中部署,与其他协作的开发者共同验证功能。

到底有多少种环境(阶段)?比较流行的说法是:

DTAP: development, testing, acceptance and production

可以在Wikipedia中看到详细解释:https://en.wikipedia.org/wiki/Development,_testing,_acceptance_and_production


这里说的Acceptance,就是对应着大家所熟悉的Staging环境。所以,可以按自己团队的风格,将这个缩写成为DTSP。


Git Flow & DTAP 强大的组合

Jachim Coudenys 在他的Blog中写了一篇文章,不仅讲到了Git Flow和DTAP,而且还把Semver结合在一起。

https://blog.jachim.be/2017/07/git-flow-dtap-semver/


大家从文章中可以找到一些解答,但Coudenys并没有画一个简单直观的图,为了便于理解,我在这里梳理一下这些概念的关系,以及推荐的做法。


上图是一个简化的流程,没有包含所有情况、所有细节,我相信这个推荐的做法,可以适用于大部分团队的工作流程。


实际上,每个团队可以根据自己的情况选用或更改。比如我们团队在实际工作中,用 release/* 分支发布到 Acceptance/Staging 环境 和 Production 环境。在成功发布后,再将代码合并到master环境,最后再创建tag,以保留稳定代码。


相关文章
评论
新版评论功能开发中
头条推荐
最新资讯