0

0

为什么企业都用gitlab?工作流是什么样的?

青灯夜游

青灯夜游

发布时间:2023-03-23 19:49:07

|

2571人浏览过

|

来源于掘金社区

转载

为什么企业都是用gitlab,而不是github和gitee等呢?下面本篇文章就来介绍一下原因,并聊聊gitlab工作流,希望对大家有所帮助!

为什么企业都用gitlab?工作流是什么样的?

是什么

官方话术:GitLab是由GitLabInc.开发,使用MIT许可证的基于网络的Git仓库管理工具,且具有wiki和issue跟踪功能。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。

GitLab由乌克兰程序员DmitriyZaporozhets和ValerySizov开发,它使用Ruby语言写成。后来,一些部分用Go语言重写。截止2018年5月,该公司约有290名团队成员,以及2000多名开源贡献者。GitLab被IBM,Sony,JülichResearchCenter,NASA,Alibaba,Invincea,O’ReillyMedia,Leibniz-Rechenzentrum(LRZ),CERN,SpaceX等组织使用。

GitLab拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用。

为什么

为什么企业都是用gitlab,而不是github和gitee等呢?

当一个项目版本多了,开发人员多了,单纯的git管理还是很多问题,一方面是开发人员权限过大,二是运维人员不太了解我们开发上面的流程,于是想着用更好的工具来管理项目。于是想到gitlab。

CI/CD

这里的CI/CD其实指的是持续集成(CI)和持续交付、持续部署(CD),CI就是软件工程师每天频繁地将更新代码的副本传递到共享位置的过程。所有的开发工作都在预定的时间或事件中进行集成,然后自动测试和构建工作。通过CI,开发过程中出现的错误能被及时发现,这样不仅加速了整个开发周期,而且使软件工程师的工作效率更高。而CD 表示持续交付(CD)是创建高质量应用程序的第二个难题。CD是一门软件开发学科,利用技术和工具快速地交付生产阶段的代码。由于大部分交付周期都是自动化的,所以这些交付能够快速地完成。

后文我们会详细介绍CI/CD的工作流程

权限控制和协同

在一个 GitLab 项目上一起工作的最简单方法就是赋予协作者对 git 版本库的直接 push 权限。 你可以通过项目设定的 “Members(成员)” 部分向一个项目添加写作者,并且将这个新的协作者与一个访问级别关联(。 通过赋予一个协作者 “Developer(开发者)” 或者更高的访问级别,这个用户就可以毫无约束地直接向版本库或者向分支进行提交。

另外一个让合作更解耦的方法就是使用合并请求。 它的优点在于让任何能够看到这个项目的协作者在被管控的情况下对这个项目作出贡献。 可以直接访问的协作者能够简单的创建一个分支,向这个分支进行提交,也可以开启一个向 master 或者其他任何一个分支的合并请求。 对版本库没有推送权限的协作者则可以 “fork” 这个版本库,向 那个 副本进行提交,然后从那个副本开启一个到主项目的合并请求。 这个模型使得项目拥有者完全控制着向版本库的提交,以及什么时候允许加入陌生协作者的贡献。(这有点类似 github,但目前github私有库收费)

在 GitLab 中合并请求和问题是一个长久讨论的主要部分。 每一个合并请求都允许在提出改变的行进行讨论(它支持一个轻量级的代码审查),也允许对一个总体性话题进行讨论。 两者都可以被分配给用户,或者组织到 milestones(里程碑) 界面。

这个部分主要聚焦于在 GitLab 中与 Git 相关的特性,但是 GitLab 作为一个成熟的系统,它提供了许多其他产品来帮助你协同工作,例如项目 wiki 与系统维护工具。 GitLab 的一个优点在于,服务器设置和运行以后,你将很少需要调整配置文件或通过 SSH 连接服务器;绝大多数的管理和日常使用都可以在浏览器界面中完成。

Git Flow 工作流介绍

一个企业当中项目,一般来说,是几个人同时进行开发的,那么如何对git分支进行管理就成了一个重点问题。

那么这里,我们就需要介绍一下我们的git flow工作流程了。

我们先从代码的运行环境来说起。代码运⾏的环境 ⼀般来说,公司团队都会有⾄少这⼏个环境:

YXPHP6.0 豪华版
YXPHP6.0 豪华版

YXPHP6系统可以看做是一个模版平台,而且它又能独立工作. 而且YXPHP6系统也不需要数据库支持. 你可以开发自己的模板,也可以同步官方的模板后进行自己的二次开发,前提是您对YXPHP6要有一定的了解.YXPHP6不仅可以用作企业建站,甚至是blog,只要是您能想到的,YXPHP6几乎都可以胜任. 因为YXPHP6系统本身与模板之间可以说是独立运行的.也就是说,不管你做什么样的网站或者是应用,

下载
  • 本地开发环境: 开发⼈员⾃测的,可以是⾃⼰本地部署的静态服务器,当然也可类似是运⾏ npm server类似的环境,本地环境运⾏ 的代码可以是任何分⽀的
  • dev开发环境: 这个环境是⽤开发分⽀dev产出的代码来部署的,唯⼀的公⽤的
  • 测试&预发布环境: 这个环境是⽤开发分⽀release产出的代码来部署的,唯⼀的公⽤的
  • 线上⽣产环境: 这个环境是⽤开发分⽀master产出的代码来部署的,唯⼀的公⽤的

对应的git分支模型是这样的

对应的分支策略是这样的

  • master :保护分⽀,对应的就是⽣产环境的分⽀
  • release:保护分⽀,所有开发完成的分⽀会申请合并到release分⽀,提供给测试⼈员测试
  • feature-*:功能分⽀,具体功能开发
  • dev/test-*:开发分⽀&脏分⽀,对应的是⼤家共⽤的开发环境,上⾯的代码会部署到⼀个公共的开发环境,供开发⼈ 员做⾃测,应付⼀些⽇常、⾮⽇常的调试
  • hotfix-*:bug紧急修复分⽀,可以直接合并到master,(假如release合并了⼏个feature分⽀,正在测试的情况 下,发现需要紧急修复的buf,紧急修复测试完毕后,可以直接合并到master,如果合并到release,在由 release合并到master,那些正在测试的功能或者还不准备上线的功能就会跟着直接上线了)

工作流程介绍

  • 接到需求⽂档,做评审后分配个每个⼈或⼩组的功能开发,相关⼈员从master 检出功能分⽀

  • 开发的时候除了会在本地测试,有需要还会合并到dev分⽀,在公共的开发环境去⾃⼰做测试

  • 因为在开发功能的期间,可能有hotfix完成合并到master,合并代码的时候习惯merge⼀下master,防⽌冲突 等

  • ⾃测完成之后,申请合并到release,合并成功后部署到测试环境后通知测试⼈员做测试

  • 测试通过后,release申请合并到master,准备上线

  • 如果测试不通过,在功能分⽀修改后重新merge

  • 上线成功稳定后删除对应的功能分⽀,dev 合并最新的master分⽀

(学习视频分享:编程基础视频

相关专题

更多
Go中Type关键字的用法
Go中Type关键字的用法

Go中Type关键字的用法有定义新的类型别名或者创建新的结构体类型。本专题为大家提供Go相关的文章、下载、课程内容,供大家免费下载体验。

234

2023.09.06

go怎么实现链表
go怎么实现链表

go通过定义一个节点结构体、定义一个链表结构体、定义一些方法来操作链表、实现一个方法来删除链表中的一个节点和实现一个方法来打印链表中的所有节点的方法实现链表。

444

2023.09.25

go语言编程软件有哪些
go语言编程软件有哪些

go语言编程软件有Go编译器、Go开发环境、Go包管理器、Go测试框架、Go文档生成器、Go代码质量工具和Go性能分析工具等。本专题为大家提供go语言相关的文章、下载、课程内容,供大家免费下载体验。

247

2023.10.13

0基础如何学go语言
0基础如何学go语言

0基础学习Go语言需要分阶段进行,从基础知识到实践项目,逐步深入。php中文网给大家带来了go语言相关的教程以及文章,欢迎大家前来学习。

698

2023.10.26

Go语言实现运算符重载有哪些方法
Go语言实现运算符重载有哪些方法

Go语言不支持运算符重载,但可以通过一些方法来模拟运算符重载的效果。使用函数重载来模拟运算符重载,可以为不同的类型定义不同的函数,以实现类似运算符重载的效果,通过函数重载,可以为不同的类型实现不同的操作。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

194

2024.02.23

Go语言中的运算符有哪些
Go语言中的运算符有哪些

Go语言中的运算符有:1、加法运算符;2、减法运算符;3、乘法运算符;4、除法运算符;5、取余运算符;6、比较运算符;7、位运算符;8、按位与运算符;9、按位或运算符;10、按位异或运算符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

228

2024.02.23

go语言开发工具大全
go语言开发工具大全

本专题整合了go语言开发工具大全,想了解更多相关详细内容,请阅读下面的文章。

282

2025.06.11

go语言引用传递
go语言引用传递

本专题整合了go语言引用传递机制,想了解更多相关内容,请阅读专题下面的文章。

158

2025.06.26

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

72

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Laravel5.7框架视频教程
Laravel5.7框架视频教程

共21课时 | 3.8万人学习

布尔教育git快速入门视频教程
布尔教育git快速入门视频教程

共10课时 | 3万人学习

后盾网HTML5视频教程
后盾网HTML5视频教程

共38课时 | 8.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号