Gitlab CI/CD是一款用于持续集成(CI),持续交付(CD)的工具,相似的工具有Jenkins、Travis CI、GoCD等。
一、概念
工作流(Workflow)指业务过程的部分或整体在计算机应用环境下的自动化,是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。在计算机中,工作流属于计算机支持的协同工作(CSCW)的一部分。后者是普遍地研究一个群体如何在计算机的帮助下实现协同工作的。工作流主要解决的主要问题是:为了实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务。
二、分类
中心化的工作流:和Subversion一样,中心化的工作流将中央仓库作为项目中所有修改的唯一入口,默认的开发分支叫做master,所有更改都被提交到这个分支,这种工作流不需要master之外的其它分支。开发者将中央仓库克隆到本地后开始工作,在本地项目副本中可以像SVN一样修改文件和提交更改;不过,这些新的提交被保存在本地,它们和中央仓库完全隔离。为了向官方项目发布修改,开发者将他们的本地master分支推送到中央仓库,这一步等同于svn commit。
基于功能分支的工作流:Feature分支工作流同样使用中央仓库,master同样代表官方的项目历史,和中心化的工作流不同的是开发者每次进行新的工作时创建一个新的分支。Feature分支应该包含描述性的名称,比如animated-menu-items或issue-#1061,每个分支都应该有一个清晰、高度集中的目的。
Gitflow工作流:GitFlow工作流仍然使用中央仓库作为开发者沟通的中心。和其他工作流一样,开发者在本地工作,将分支推送到中央仓库,唯一的区别在于项目的分支结构,可以分为历史分支、功能分支、发布分支、维护分支。
Fork工作流:Fork工作流其它工作流不同,它不是使用唯一的服务端仓库作为中央代码库,而是给予每个开发者一个服务端仓库。也就是说每个贡献者都有两个Git仓库:一个私有的本地仓库和一个公开的服务端仓库。开发者通过执行克隆操作将远程公共仓库复制到本地,这是有的开发环境。做完修改后准备提交时,代码将被推送到自己的公开仓库而非官方仓库,然后向主仓库发起一个Pull Request,项目维护者审查没问题后进而合并到官方仓库。
dev=>test=>pre=>master=>release