gitlab 删除分支_Gitlab概览

Gitlab是开源的基于Git的仓库管理系统,也可以管理软件开发的整个生命周期,是项目管理和代码托管平台,支撑着整个DevOps的生命周期。Gitlab很容易选为GitHub,作为公司私有库管理的工具。我们可以用Gitlab Workflow来协同整个团队的软件开发管理过程。

软件开发阶段

bfa6cb0597ea9c4f2a20938f989bf883.png

gitlab软件开发阶段

Gitlab工作流将软件开发定义为10个阶段,并提供相应的解决方案,帮助团队高效协作,完成项目开发。

Gitlab flow

区别于SVN等版本控制系统,基于Git的版本管理对于创建分支和合并变得更加容易,也方便项目的管理。

40a573676494a90c56b398b5dc4891af.png

gitlab工作流

利用工单追踪,将功能特征驱动开发和功能特征分支有机结合在一起。受保护的分支对于权限较低开发者等角色需要通过发起合并请求,复核评审通过后最终才能合并到保护分支。GitLab flow是GitLab官方推荐的分支管理策略。我们可以在原则上约定:分支分为永久分支临时分支,都是在master分支以外建立。永久分支不会被删除,包括主分支master,准生产分支pre-production,生产分支production。临时分支分为Feature特征分支Fix修复分支,在开发完成会被删除。一种简单的方案,通常可以基于最新的master主分支,创建特征分支,进行特征开发,最后合并请求到master分支。

fa5451ab830750f774751230709afc21.png

gitlab特征分支

只有一个master主分支,这样的好处在于,可以代码及时合并,可以是本地代码库存量最小,也可以更快的持续交付。当然,与此同时,部署、环境、集成等相关问题也没得到很好的解决。

对于每一次分支合并,我们总是期望可以部署一个稳定的版本。我们可以考虑多环境分支的情况。

cdad42af6111a4718cec1f8267b7aaf5.png

gitlab多环境分支

Gitlab flow 的最大原则叫做"上游优先"(upsteam first)。代码的变化,必须由"上游"向"下游"发展。Feature和Fix是master的"上游",master是pre-production的上游,pre-production是production的"上游"。比如,生产环境出现了bug 或者要开发新的feature,这时就要建一个临时Hotfix或Feature分支,开发完成把它合并到master,确认没有问题,再cherry-pick到pre-production,这一步也没有问题,才进入production。Feature和Fix在开发人员在开发环境部署测试,master在测试环境中部署测试,pre-production在演示环境中部署测试,production在生产环境发布,一条流水线下来,可以持续完成项目的部署交付。

此外,我们可以有多稳定版本的分支策略,用于将软件发布给外界。

d1a074a8fcf5e5293021fed459962960.png

gitlab-release分支

版本发布适用于APP、小程序等有版本规划的项目。稳定分支以master为起点,并尽可能晚地创建。通过尽可能晚的分支,可以最大程度地减少将错误修正应用于多个分支的时间。在master上打出稳定的分支版本。如果稳定分支发行后,出现bug,可以先将错误修复到master,然后cherry-picked到稳定分支,我们可以通过设置Tag来提高补丁版本,可以维护一个稳定分支专门指向最新版本发布的分支提交。

此外,我们可以对分支名称做个约定,在Gitlab上 基于issue创建的分支默认是issue编号+issue标题等等。

Issue

GitLab 有一个强大的工单追溯系统,在使用过程中,允许你和你的团队,以及你的合作者分享和讨论建议。所有的开发工作都应该以工单任务为导向

f6b52a989da0cd7b6315afe666e8d304.png

gitlab-issue

我们可以填写是否私密、受托人、截止日期、标签 、里程碑等信息,利用这些信息可以更加方便地组织活动和安排优先级。

Labels

GitLab 标签也是Gitlab flow的重要组成部分,可以对issue工单进行分类和定位。也可以通过定义优先级标签组织它们。通常和Boards一起,来组织计划和工作流程。

e268768fd1cefda4d2530f81cd5ccb9a.png

gitlab-label

我们可以根据需要设计一些常用标签,如待办类,Bug类,功能改进类等进行定位、统计和跟踪。

Boards

Gitlab 工单面板是一个用于计划以及组织工单,使之符合项目工作流的工具。Boards包含了与其相关的对应标签,每一个列表包含了相关的被标记的issue工单,并且以卡片的形式展示出来。这些issue卡片可以在列表之间推拽移动,被移动的卡片,其标签将会依据你移动的位置更新到相应列表上。

fd6fba2cd225617ef146cefcdf82ad02.png

gitlab-boards

Milestones

Milestones 是GitLab 中基于共同目标、时间进度追踪团队工作的最好工具。它定义了目标阶段对应的工单集合和合并请求。通常是团队协作在截止日期完成某个目标。例如,发布一个新的版本,启动一个新的产品,在某个日期前完成,或者按季度收尾一些项目。

de3d8b6ee96489b951d83ffd56b8a6c8.png

gitlab-milestones

Merge Request

我们可以根据issue创建branch和发起Merge Requests(MR)合并到目标分支。

beceef2a7c31b1e735da3e7f1e08e863.png

gitlab-MR

开发者检出特征分支开发,提交后并推送到远程。功能分支和修复分支合并进master分支,必须通过Merge Requests。审核员可以对这些提交和变化进行评审,可以反复这个过程,直到符合代码规范,才合并到目标分支。

1bdbda637d82d619951aa249c8ae1afb.png

gitlab-branch-checkout

master分支应该受到保护,不是每个人都可以直接修改这个分支,以及拥有审批 Merge Request的权力。

933917da4b7baaa880b44c758dcb42c8.png

gitlab-protected-branches

上图展示了保护分支的权限设置,规定了哪些角色具有Branch的MR和push的权限。否则,推送无权限的分支时可能会出现以下错误:

you are not allowed to push code to protected branches on this project

每一次 MR 都会有一个标题(这个标题总结了这次的改动)并且一个用 书写的描述。在描述中,你可以简单的描述该 MR 做了什么,涉及的任何工单和 MR(在它们之间创建联系),并且,你也可以添加个,当该MR 被合并的时候,相关联的工单就会自动被关闭。在描述里添加 Closes #xxx,xxx为对应的issue编号。Merge成功后,自动关闭工单。

aa22db5b776fadc3b7c816a541a14546.png

gitlab-markdown

有权限角色在Merge RequestMerge 前,注意下Merge的内容,评审通过后,最好能确保每一次Merge后对应Master分支都是稳定的

608ea7248a119be818b0953a3c457d57.png

gitlab-merge-request

WIP MR

WIP (Work in Process) MR,避免 MR 在准备就绪前被合并。只需要添加 WIP: 在 MR 的标题开头,它将不会被合并,除非你把 WIP: 删除。当你改动已经准备好被合并,编辑工单来手动删除 WIP: 。或者使用快捷方式,只需要在评论或者 MR 描述中输入斜线命令/wip并提交即可快速添加到合并请求中。

c31eb753d5333f031decffee9d74e2e8.png

gitlab-wip

Code Review

一旦你创建一个合并请求,审核方收到反馈,就可以决定是否合并这个请求了。审核者可以进行差异比较,回复或者解决它们。在图形界面中可以看到提交历史,通过提交历史,你可以追踪文件的每一次改变。你可以以行内差异或左右对比的方式浏览它们,甚至评论他们。

9f8af9c3972455300f909943603a0ab8.png

gitlab-codeview

如果有合并冲突,甚至可以在线编辑解决。

Memebers

项目拥有者和维护者需要添加协作的团队成员,进行项目协同,可以选择已注册gitlab的有效成员进行邀请。

fa93663c47a66155220ca952463dfe51.png

gitlab-members

受邀人会受到电子邮件,同意后就可以加入团队了。低权限角色只能开发,甚至只能浏览,无权限维护。

CI/CD

是构建项目持续集成、持续部署和持续交付的有效工具。首先需要在项目根目录下创建文件.gitlab-ci.yml。

0099cd5afabcfd6377f0edee90c87893.png

gitlab-ci/cd

例如,我们可以在项目中每一次Merge Request,都可以触发pipeline 去构建、测试和部署。而具体的构建规则可以根据编写不同的.gitlab-ci.yaml脚本实现。CI/CD pipelines的运行离不开Gitlab Runner。所以,还需要安装GitLab Runner,它可以在任何地方(能ping通Gitlab)运行,也可以是以Shell、docker、kubernetes等不同的形式运行。GitLab Runner向Gitlab注册,需要Gitlab授权。注册成功后,GitLab Runners负责从Gitlab拉取代码进行构建、测试和部署。区别于Jenkins,Gitlab-CI更加适合DevOps人员,开发与运维是同一个人,非常适合敏捷开发。Jenkins通过Hook可以使编译服务和代码仓库分离,耦合度低,适合多角色团队,职责分明。将另有篇幅概述,这一块暂不赘述。

周期分析

我们可以通过周期分析,可以查看各个阶段的统计,及时反馈项目的进展和改进项目的不足之处。

e04de1b25d6c3917a6ca97f2112e24db.png

gitlab-analytics

Markdown Tips

在Issue 或 Merge Request 等对应的markdown描述或者git commit -m ""注释信息中,可以添加特殊标识来实现一些特性。可以看下简单的例子:

## 增加一个新页面这个 MR 将会为这个项目创建一个包含该 app 概览的 `readme.md`。Closes #1,#2 and https://gitlab.wenqy.com/group/project/issues/<8>related to #3:smile:/cc @wenqy @all

上面是MR的一段描述。合并时,会关闭编号为1,2的issue工单,以及url指向的项目工单。这还做了一个编号为3的issue工单关联,不会关闭。并邮件通知用户。还支持emoji表情。

添加到你的 MR 以便可以使用 【GitLab周期分析】追踪你的项目进展,是十分重要的。它将会追踪"CODE"阶段,衡量第一次提交及创建一个相关的合并请求所间隔的时间。

第一次提交

第一次提交时添加一个关联的Issue编号,利用Ref #关联

git commit -m "this is my commit message. Ref #xxx"

或者使用全称Related to关联

git commit -m "this is my commit message. Related to https://gitlab.com///issues/"

链接第一次提交与Issue,将有助于【GitLab周期分析】跟踪工作流程,它将度量计划该Issue的实现所用的时间,即从创建Issue到进行第一次提交之间的时间。

任务列表

在描述里添加 - [] 子任务,划分子任务

- [x] Completed task - [ ] Incomplete task   - [ ] Sub-task 1   - [x] Sub-task 2   - [ ] Sub-task

描述里面体现子任务的列表

28fa4b057b4dcecd1187a959ca17f81b.png

gitlab-tasklist

此外,markdown描述里输入#,触发已有issue下拉;输入!,触发已有MR下拉;输入/,触发命令;输入:,触发emoji

在CI中还可以在git commit 注释里添加[ci skip]跳过CI等等。

此外,还可以对Issue和Merge Request等描述定义描述模板,规范描述。

Gitlab还有wiki和代码片段等知识库的管理和分享功能,方便团队规范行为。

总结

Gitlab开源免费,可以自建gitlab。它清晰且直观地划分了软件开发管理的各个阶段,可以无缝衔接过渡到每个阶段。它能预测和控制项目的生命周期,整个平台很容易上手和使用,以自己的工作流管理项目的整个生命周期非常方便,轻量而敏捷,甚至可以说是一体化管理,为敏捷而生,是一个值得推荐的协同开发项目管理工具。

参考

https://about.gitlab.com/blog/2016/10/25/gitlab-workflow-an-overview/

https://about.gitlab.com/blog/2014/09/29/gitlab-flow/

https://docs.gitlab.com/ee/topics/gitlab_flow.html

https://docs.gitlab.com/ee/user/markdown.html

https://gitlab.com/gitlab-org/omnibus-gitlab/-/labels

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值