本来来自极狐GitLab 资源中心,原文链接:https://resources.gitlab.cn/articles/020183ba-cfc0-4917-b901-248acdcfc92f。
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab :https://gitlab.cn/install?channel=content\&utm_source=csdn 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。
更多关于极狐GitLab :https://gitlab.cn 或者 DevOps 的最佳实践,可以关注文末的极狐GitLab 公众号。
Git 简化了分支和合并,使得软件开发团队从 SVN 等其他源码控制工具中脱离出来,采用工作流来简化开发。然而,从其他版本控制系统转移到 Git 的组织可能难以确定有效的工作流程。极狐GitLab Flow 通过将 Git 工作流与议题跟踪系统集成,创造了一种无缝的软件开发方法。
有时候,你可能拥有 "过多" 的好东西。Git flow 当然也是如此,这是一个著名的软件开发工作流程,它提供了多种选择,但却会让用户陷入困境。
为了消除容易引起混乱的复杂性、简化开发流程,我们推出了极狐GitLab Flow。极狐GitLab Flow 为 Git 工作引入了议题跟踪功能,简化了流程,消除了混乱。
极狐GitLab 公众号后台回复新手指南获取极狐GitLab 新手指南一份。
Git flow的问题
要想了解极狐GitLab Flow 的工作原理,不妨先看看它试图解决的问题。在 Git flow 中,有两个主要的痛点,都涉及到不必要的分支切换。
Git flow 强制开发者使用develop分支而不是master分支。因为大多数工具都默认使用 master,所以涉及到大量的分支切换。另一个让人烦恼的地方是 hotfix 和release分支,这对大多数组织来说显得过于繁琐,而对实践持续交付(CD)的公司来说则完全没有必要。
这让我们想到了极狐GitLab Flow ------ 一个让一切都变得简单和包容的工作流程。
极狐GitLab Flow:一个简化的分支策略
极狐GitLab Flow 将特性驱动开发和特性分支与议题跟踪相结合。极狐GitLab Flow 将 Git 工作流程与议题跟踪系统整合在一起,提供了一种简单、透明、高效的 Git 工作方式。
极狐GitLab Flow 是一种让代码和议题跟踪器之间的关系更加透明的方式。代码库的每一次修改都是从议题跟踪系统中的一个议题开始的。当你完成编码或想要讨论代码时,你可以打开一个 Merge Request (合并请求)。当代码审核完成后,审核员会将该分支合并到 Master 中。通过使用 GitLab 工作流,团队可以通过将主分支合并到production分支来部署代码,同时可以快速识别生产环境中的代码版本,使他们能够快速识别哪些代码在生产中。在这个工作流程中,提交只流向下游,确保所有的东西在全面的环境中测试。
极狐GitLab Flow 避免了 Git flow 所伴随的发布、标记和合并的额外开销。
简而言之,极狐GitLab Flow:
所有的功能和修正都会先进入 master;
允许production或stable的分支;
错误修复/快速修复补丁是从 master 中拣选(cherry-picked)出来的。
分解软件开发的10个阶段
极狐GitLab Flow 将构思推进到生产阶段的方式,并让每个人都能了解所需信息并提高工作效率。我们确定了开发过程中必须经历的 10 大关键阶段,以使软件能够投入生产。极狐GitLab Flow 可以轻松地支持所有阶段进行核算,同时继续提供开发生命周期的全面可见性。
广义上讲,极狐GitLab Flow 主要分为三个领域:feature (特性)分支、production (生产)分支和release (发布)分支。
feature分支是实际开发工作发生的地方。开发者创建一个针对功能或 bug 修复的分支,并在那里完成所有工作,而不是在 master 分支上。一旦工作完成,开发人员就创建一个 Merge Request (合并请求),将 feature 分支的内容合并到 master 分支。
production分支本质上是一个整体--一个单一的长期运行的生产发布分支,而不是单个分支。可以为每个可部署的版本创建一个标签,以便跟踪这些细节。
最后,如果你向客户发布软件,那么release分支是关键。每发布一个新版本,你都会从master创建一个稳定分支,并决定一个标签。如果你需要做一个补丁发布,一定要拣选(cherry-pick)出关键的 bug 修复,不要直接提交到稳定分支。
遵循准则
想让极狐GitLab Flow 发挥最大的作用?这里有几条准则强调了测试的重要性,即使在CI环境中也是如此。
测试所有的 Commits (提交)。不要等到所有的东西都合并到master分支后才进行测试。每次提交都进行测试,以便在过程中更早发现问题。
在所有的 Commits (提交)上运行一次全部的测试用例,即使你必须并行运行测试。
[代码审查]先于[合并到master]。不要指望一周结束前的测试查出所有的问题。随着提交进行代码审核,这样更容易查出问题,其他同事也可以集思广益提出解决办法。
极狐GitLab Flow有什么好处?
极狐GitLab Flow 提供了一种简单、透明、高效的 Git 工作方式。使用极狐GitLab Flow,开发者可以在不同的环境中协作并维护多个版本的软件。极狐GitLab Flow 减少了发布、标记和合并的开销(这是其他类型 Git 工作流程中常见的挑战),创造了一种更简单的代码部署方式。提交流向下游,确保每一行代码都在所有环境中得到测试。任何规模的团队都可以使用极狐GitLab FLow,它具有适应各种需求和挑战的灵活性。