拥抱开源——轻量级的代码版本控制神器Gitlab

项目/代码版本控制及存储是一直是团队多人开发面临的挑战,随之也就诞生了很多版本管控的神器,如TFS,SVN等,今天就来分享下轻量级的Gitlab,以及结合VSCode人性化的各种骚操作。

公司搭建自己的GitLab

  这个步骤一般是运维工程师负责帮忙搭建好相关服务器,然后告诉相应的git地址和端口,注意开通本地访问git的端口取决于用什么方式,如果用http带域账号验证的形式,则开通http端口,如果采用ssh key认证,就开通ssh端口;二者的区别在git clone到本地的时候有所不同,但是操作git clone的前提都需要运维人员把自己的账号加入到git服务认证中,好了以后,登录到git网页内,现在菜单栏的Groups建一个Group,然后建一个project,挂在这个group下面,一般设置Visibility Level为private,别人需要访问时再在project的Setting/Members下加进来,create group和create project如图1;
拥抱开源——轻量级的代码版本控制神器Gitlab_第1张图片

图1 创建group和project

创建好project后会自带一个被保护的master branch,可以自己再建一个release branch,一样保护起来,可以让release对应prod环境,master对应uat环境,具体保护banch的措施如图2,所谓保护,就是让developer的身份无法merge,push,delete这些分支;

拥抱开源——轻量级的代码版本控制神器Gitlab_第2张图片

图2 配置新建/保护project的branchs
接下来添加该project的members,如图3,在Settings/Members下,其中 Select members to invite:从在整个git服务器内认证过的users中选择你要添加的user; Choose a role permission:一般人给Developer权限,管理人员给Maintainer; Access expiration date:权限到期日,留空表示永久; 然后Add to project,在此按钮下面就会有一个list看到所有有权限看该project的users,maintainer和owner有权限管理其他users。

拥抱开源——轻量级的代码版本控制神器Gitlab_第3张图片

图3 管理该project的members

Developer同步/上传GitLab

1.下载安装gitlab

官网:https://git-scm.com/downloads

2.安装好git后,配置本地库

  如果使用http和域账号的形式认证远程,那么直接到步骤4的git clone git远程库URL 指令,然后会让你输入域账号和密码,直接输入认证后,用户名和密码会保存在windows系统的用户凭据内,同理在改了密码后,也要来改这里的git凭据,改密码后本地再git pull会报错权限有误,这里讲一下配置SSH的模式,假设git绑定的是自己公司邮箱账号,非域账号,这一步需要获取本地公钥:
在自己觉得合适的磁盘新建一个gitworkspace,如D:\gitworkplace
进入该workspace下,鼠标右键进入’Git Bash Here’的控制台获取自己本机的公钥:

$ ssh-keygen -o -t rsa -b 4096 -C "[email protected]"
$ cd ~/.ssh
$ ls 
$ cat id_dsa.pub
3.配置远程库SSH权限

浏览器打开:http://运维给的git远程服务器DNS
用自己的邮箱和密码登录,然后配置自己的user settings,如图4,把公钥加进去,成功激活自己在git服务器中的权限。

拥抱开源——轻量级的代码版本控制神器Gitlab_第4张图片

图3 配置git服务器的SSH权限
4.同步本地库

进入步骤2的D:\gitworkplace内,鼠标右键进入’Git Bash Here’,输入:
git clone git项目的URL
拉取自己需要的项目文件到D:\gitworkplace内,具体URL可以在图5点击”clone“按钮来获取,SSH模式选择SSH,HTTP选择HTTP;
拥抱开源——轻量级的代码版本控制神器Gitlab_第5张图片

图5 获取git project的URL
5.Git结合Visual Code教程规范
git branch分支master和release

master对应uat
release对应prod

拥抱开源——轻量级的代码版本控制神器Gitlab_第6张图片

图6 git分支之间的关联

  如图6,新项目来了以后,先”平分支”,确保release和master保持一致,然后Dev基于master分支新建一个自己的branch,开发测试好以后,将Dev分支merge到master做”测试”,在master分支顺利通过测试的,merge到release分支上线,上线完成后,做一次”平分支”;原则上不允许直接修改release,但针对某些生产上的hot fix,可以直接基于release新建一个dev分支,开发完本地测试完以后,merge到release,要确保上线准确无误后,再release平分支到master。

Git项目的角色分布:
  • Owner 该项目的拥有者,具有绝对权限;
  • Developer 该项目的开发者,只有git fetch,git pull权限,无merge,git push等权限;
  • Maintainer 有merge和git push权限;
项目的代码管理流程:

1.项目开始,具体的项目跟进可新建一个Issue来跟进,如图7:
Title:项目名
Description:项目描述,可支持markdown语法;
Assignee:项目分配给谁;
Milestone:可定义为项目版本,如这次的项目发布版本为20190720;
Due date:项目上线PROD日期;
Labels:项目进度,共定义了7个Labels,顺序依次为:Requirement 需求阶段;DEV 开发阶段;UAT 测试阶段;Pending-Approve 等待审批阶段;Approved 已审批;PROD 上线投产;Identify On PROD 在生产上跟进两天来确定数据没问题;
其中除了Approved需求领导来审批外,其他的Labels,都是Dev自己跟进。
拥抱开源——轻量级的代码版本控制神器Gitlab_第7张图片

图7 新建git project 的Issue
2.在网页上新建merge request,release库的merge到master,确保master的所有object和release保持一致,如图8 平分支的操作。

拥抱开源——轻量级的代码版本控制神器Gitlab_第8张图片

图8 平分支的操作
3.安装vscode,如果有需要,打开VS Code后,可以点击右侧栏的扩展如图5的1处,在搜索栏搜索Chinese来安装中文包,同时需要安装其他插件也可以在这里寻找,如python,pgsql等;点击右下角的齿轮图像如图5的2处,点击setting,如图5的3处,在搜索框输入”git.path”,点击图5的4处的json串文件,配置git path和git终端如下:
{
     "git.path": "D:\\Dev\\Git\\cmd\\git.exe",
     "terminal.integrated.shell.windows": "D:\\Dev\\Git\\bin\\bash.exe",
     "git.confirmSync": false
}

面的路径要和自己安装的git路径保持一直,转义字符也要转义处理,保存;在图9的5处添加git本地库的工作目录D:\gitworkplace进来,然后可以看到图5的6处有出现master和刷新图标;同时打开终端后,在图9的7处也可以看到git终端,可以在终端处进行git命令操作,VSCode配置git完成。

拥抱开源——轻量级的代码版本控制神器Gitlab_第9张图片

图9 VS Code配置git

4.使用VSCode管理git,使用前最好点击图10左下角的刷新按钮,多点击几次也可以,确保自己获取到的是最新的版本,然后点击master,会跳出选择要签出的ref,里面有其他的分支来供我们切换,选中后按回车即可,也可以点击创建新分支,输入新分支名字按回车可以创建基于master的新dev分支,如果要创建基于release,需要先切换到release分支,再创建新分支;新分支明明要求:

  • 全小写英文
  • feature/Issueid-项目描述
  • bug/Issueid -项目描述
    如:feature/001-ma_ad_etl,bug/001-ma_ad_etl;

拥抱开源——轻量级的代码版本控制神器Gitlab_第10张图片

图10 创建/切还分支
5.本地dev分钟的开发/测试都Ok后,保存好修改或新增的文件,点击图11的1处可以看到有新增和改动的文件,选中图7的2处的文件,+号表示暂存更改,+号前面是撤销更改;然后是图7的3处,填写的备注消息将会成为网页上merge request的名字,写完后,点击3处的勾就把代码提交了,再点击4处的刷新(或者会变成上传云端的图标)按钮,就可以把代码同步上传到远程库的dev分支;

拥抱开源——轻量级的代码版本控制神器Gitlab_第11张图片

图11 提交修改的文件

6.打开网页上git项目http://git项目URL,点击图12的1 处Merge Request,跳出如图12的右边界面,2处是我们刚刚在VSCode上提交的改动,点击2处的Create merge Request跳转到图13。
拥抱开源——轻量级的代码版本控制神器Gitlab_第12张图片

图12 create网页远程库merge request
7.提交远程库的dev分支到远程库的master,如图13,Title是刚刚在VSCode提交写的那段备注,Description是描述,支持markdown,可以写“#”把这个merge request和对应的Issue关联起来,Assignee给有merge权限的账号做merge;Milestone和Labels和Issue的保持一直即可,Source branch是自己的dev,Target branch一定要注意下,如果是基于master的dev最终回到master,如果是基于release的,最终回到release;最下面的Commits可以查看是谁提交的这个merge request,Changes可以预览这些改动,所有信息都确认无误后,点击Submit merge request来提交,跳转到图14。

拥抱开源——轻量级的代码版本控制神器Gitlab_第13张图片

图13 提交远程库的dev到master
8.代码最终merge如图14,1处的merge图标,developer权限是灰色的,没有merge权限,需要找项目负责人merge,后面的“delete source branch”如果勾选,merge后远程对应的dev分支被删除,developer不能再对源分支进行更新提交操作了,没勾选的话,还可以再次使用,但是也要确保自己的源分支是最新的代码,建议勾上,审批人可以通过2处的Changes来预览改动,确认无误后,点击merge,把修改的代码merge到master或者release,merge完成后1处会有个Revert按钮,是针对误merge的一次回滚操作。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190712185437684.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xYV2FsYXoxczFz,size_16,color_FFFFFF,t_70)
图14 代码最终的merge

9.上线操作,其实和平分支是一个原理,点击网页上的merge request,然后点击new merge request,跳出的界面后,source选master,target选release,点击提交就能把master merge到release达到上线的目的。

6.上线流程的总结

整个流程分文dev,uat和prod阶段,dev暂时定为自己的机器,供自己开发测试;uat为prod的一个镜像,可以模拟prod的环境测试;prod为生产,原则上生产上线需要一次性成功,针对生产上线出现以下问题,是不允许被接受的任何借口的,需要请大家吃吃零食,喝喝咖啡长长记性。
1.代码跑不通,缺少逗号,分号等小问题的;
2.反复强调过的规范没有做到位的;
3.上线版本不是最新的;
4.上线后被用户反馈数据没更新甚至没数据的
5.……

你可能感兴趣的:(GitLab)