Skip to content

Gitlab操作和管理

1. 配置Gitlab

1.1 重置密码

Gitlab安装完成后自带了root用户,但是自动生成的密码比较长很难记,我们可以设置root用户的密码。点击右上角头像:
Alt text 进入个人信息配置页面,选择Password,重置密码后保存:
Alt text 重置后会页面自动跳转登录界面:
Alt text

1.2 设置中文汉化

点击右上角头像,再点击Preferences(偏好设置) Alt text 向下滑动,找到Localization(本地化),进行修改,并保存 Alt text 页面刷新,界面就会变成中文:
Alt text

1.3 设置全局本地化

点击左边菜单按钮,再点击管理员:
Alt text 设置每周第一天为周一,未登录用户访问Gitlab默认显示中文:
Alt text 比较遗憾的是Gitlab(即使是最新版17.x)没有提供全局设置语言的功能,只提供每个用户自己修改自己的显示语言。

1.4 设置头像

用户登录后Gitlab默认没有提供显示的头像,Gitlab提供设置头像功能。点击用户头像后,选择编辑个人资料:
Alt text 点击选择文件按钮,选择图片后,点击页面最下面的更新个人资料设置按钮,即可完成设置头像: Alt text

1.5 设置时区

点击用户头像后,选择编辑个人资料,进入编辑资料界面:
Alt text 选择时区为UTC+8的beijing,点击更新个人资料设置按钮,完成时区设置: Alt text

1.6 设置保护分支

点击管理员,进入设置页面,选择Settings-仓库菜单:
Alt text
选择默认分支展开,主分支名称默认为main,现改为master,勾选允许远程创建并推送仓库到Gitlab:
Alt text

1.7 配置全局服务器地址

默认GitLab实例的外部可访问网址是http://gitlab.example.com/ ,通过配置EXTERNAL_URL变量可以调整,具体在/etc/gitlab/gitlab.rb文件中设置 external_url:

sh
[jack@hadoop102 ~]$ sudo vim /etc/gitlab/gitlab.rb
## 调整32行
external_url 'http://hadoop102'

修改配置后,需要运行以下命令以应用更改:

sh
[jack@hadoop102 ~]$ sudo gitlab-ctl reconfigure

1.8 设置时间偏好

点击右上角头像,再点击Preferences(偏好设置) Alt text 相对时间在使用中没有绝对时间更容易理解,比如显示刚刚5分钟前提交代码,如果页面太久没刷新容易造成误解。
Alt text

2. 团队管理

去到一家公司,应该是已经有了GitLab平台,运维人员拥有root管理员账号。而作为一名普通的开发人员,你的leader和同事都拥有各自的GitLab账号和不同权限。入职后,你只需要申请开通GitLab账号和对应权限,不需要你来操作,运维人员比如root账号)会负责处理。

2.1 用户群组介绍

在Gitlab里可以创建出组、组下的子组。在小公司里面往往可以看见gitlab有后端,大数据等等一系列组。命名时尽量不要使用中文创建组名, 可以在组信息中的备注编写中文描述以及中文组名, 组内人员名称也尽量用全拼命名。
对于人员权限以及角色的控制也比较简单,有如下五种:

  • Owner:最高权限,谁去创建组,这个组就被谁拥有,它可以开除管理员,但管理员无法操作owner的角色。
  • Maintainer:(管理员-只是具备sudo权限的用户)管理员一般是给小组的组长,或者是给产品线的总监设定。
  • Developer:是干活的人,就是写代码的程序员,可以进行代码的上传以及代码的下载,不能下载其他的组内的代码,只能下载它们组的代码。
  • Repoter:比如现在有需求,其他组的大牛到我们组过来指导工作,要审视我们的代码,人家就提出需要一个权限,我不能给它developer因为它会改你代码,其他组的人不能改我们组的代码,所以就给一个Repoter权限,他只能看,只读权限。
  • guest:不用看,匿名,直接去掉。一般出现在从ldap中把离职人员的信息删掉,再去gitlab查这个人的时候,它就是一个guest用户(匿名)需要再到gitlab把它删掉(不删也没事)。

2.2 停用用户注册

提高Gitlab的代码安全性,可以停用用户注册功能:
Alt text 点击停用按钮后,会自动跳转到注册限制配置页面,取消Sign-up enabled勾选,点击保存即可:
Alt text

3. 创建用户

为了模拟公司实际职场环境,我们假设我们的开发团队是数据开发组,数据开发组的leader账号为tudou,你的账号是jack:
Alt text 创建leader的账号tudou,填写完毕点击创建用户按钮即可:
Alt text 创建完成tudou,继续创建jack:
Alt text 创建jack,同样用户名最好用英文,名称可以用中文,jack可以被土豆拉入到群组中就可以了,无需创建群组权限:
Alt text 创建好jack后,可以查看用户列表:
Alt text 点击编辑按钮,可以手动设置他们的初始密码,可以用于用户忘记密码,给用户手动重置:
Alt text 也可以tudou,jack用户自己去邮箱里面点击去设置密码:
Alt text 无论是管理员手动设置密码还是通过邮件链接登陆,初次登陆要求重置密码,下面是直接使用初始密码登录后被要求设置密码:
Alt text 重置密码后,即可直接登录:
Alt text 如果点击邮箱链接,第一步直接要求设置密码:
Alt text

提示

新创建的gitlab账号登陆进去后,都需要进行前面章节:配置Gitlab相关内容的配置,方才在后续项目中使用。

4. 创建群组

运维人员已经创建好账号并把账号给我们,后续就不需要用运维账号root继续操作了,下面我们假设研发中心是rdc,下属后端组、前端组、大数据组等子群组,使用tudou账号登陆hadoop102,选择群组,点击新建群组按钮:
Alt text 选择Create group板块:
Alt text 进入新建群组的表单页面,填入rdc群组信息,点击创建群组:
Alt text

4.1 创建大数据组

有了研发中心群组rdc, 再在里面创建bigdata子组,选择创建新的子组板块:
Alt text 输入大数据组英文名称bgidata:
Alt text 当然,根据公司情况还可以进一步在数据组下面细分子组(比如:离线、实时、湖等),这里我们就不再细分。
接下来在大数据组中添加成员,首先进入bigdata群组的成员列表页面:
Alt text
可以看到当前只有土豆账号人员,点击右边邀请人员按钮:
Alt text
弹出邀请成员对话框框,选择jack,设置角色为Developer,过期时间不选默认为永久有效:
Alt text 最终效果--我们就有一个顶级群组rdc,其下有一个子群组bigdata,组内有管理员tutou,开发人员jack:
Alt text

5. Gitlab仓库管理

5.1 新建项目

用户登陆后, 这里我使用jack账号(tudou账号也可以),点击创建项目板块:
Alt text 选择从空白项目创建:
Alt text 配置项目名称和项目Url,点击新建项目,比如这里创建项目为my-gitlab-first-project:
Alt text
点击新建项目后,页面自动进入my-gitlab-first-project项目首页:
Alt text
需要注意的是项目创建的人不一定是项目权限最高的人,默认Gitlab中项目的owner角色(项目的最高权限角色)是,项目管理员是当前创建者所在群组的组长。另外一旦项目创建完成后,它的主分支master是受到保护的,本地开发无法直接推送到master上面。

5.2 删除项目

一般在代码仓库中的项目严禁删除,即使后期没有开发人员维护,甚至有新项目代替它,毕竟它们都是是公司重要的数字资产。但是如果开始配置不正确(即使配置不正确还可以修改呀😂),还未正式提交开发代码,特例允许删除。
必须使用root账号登录系统,进入我们的刚刚创建项目my-gitlab-first-project,点击三个点的按钮:
Alt text
在高级栏目最后一个功能就是删除:
Alt text 点击删除项目按钮,弹出确认删除:
Alt text

5.3 Gitlab页面上提交代码

my-gitlab-first-project创建后,需要由管理员进行初始化提交,开发人员没有权限做推送,Gitlab提供页面WebIDE直接提供管理员处理仓库,使用tudou账号登陆Gitlab系统,进入my-gitlab-first-project项目:
Alt text 点击添加描述文件,页面自动跳转到WebIDE界面:
Alt text 编辑README.md文件后,点击提交并推送:
Alt text 退出WebIDE,点击gitlab图标:
Alt text 弹出选择要打开的页面,选择第一个my-gitlab-first-project页面:
Alt text 可以看到项目仓库里面已经有了README.md文件:
Alt text

6. Gitlab的客户端插件

在IntelliJ IDEA 2024中,GitLab插件为开发者提供了与GitLab进行交互的功能,使得在开发环境中能够更方便地管理GitLab项目、合并请求、分支和问题等,IDEA2024提供了GitLab插件,可以直接使用,无需安装。

6.1 配置Gitlab插件

进入IDEA2024的设置界面,依次选择Version Control-Gitlab:
Alt text 点击Add account链接,弹出gitlab对话框:
Alt text 输入gitlab的服务器地址,注意地址开头不是https Alt text 然后点击Generate按钮,他会自动打开浏览器,如果浏览器没登录gitlab账号,默认跳转到登陆页面:
Alt text 使用jack账号登陆(jack才是干活的,他不使用gitlab插件谁使用😁),登陆后自动跳转到访问令牌页面,token的权限必须至少勾选api,read,user,Gitlab插件才能正常使用:
Alt text 点击创建后,进入令牌创建完成页面,需要注意的是token只有初次创建完成后才能才看,以后在进入该页面不会再看到该token的值:
Alt text
将刚刚生成的token粘贴到token文本框中,点击login in按钮:
Alt text 可以看到这时就配置了gitlab和idea之间的关联:
Alt text

6.2 使用Gitlab插件拉取仓库

点击File-New-Project from Version Control菜单, Alt text 弹出拉取代码对话框,选择Gitlab后,会自动读出用户有关的所有项目:
Alt text 点击clone按钮,即可拉取gitlab远程仓库代码:
Alt text 等待拉取完毕, 如图所示:
Alt text

6.3 提交代码到Gitlab

比如我们现在想把my-gitlab-first-project普通项目变为一个Maven项目来处理,添加pom.xml文件:

xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.rocket.demo</groupId>
    <artifactId>my-gitlab-first-project</artifactId>
    <version>1.0</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
		<maven.compiler.target>8</maven.compiler.target>
		<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
		<target.java.version>1.8</target.java.version>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>
</project>

选择项目右键,依次选择菜单:New-Directory:
Alt text 弹出选择生成目录对话框,选择src/main/java Alt text 创建com.rocket.demo包名,并编写Demo.java Alt text 准备提交代码:
Alt text 填写日志内容,提交并推送远程gitlab:
Alt text 弹出对话框,修改推送的目标远程分支,比如我提交到开发分支上,点击推送按钮: Alt text 推送完毕后,在gitlab服务器上面查看:
Alt text 可以看到在develop分支上,代码已经提交上来了:
Alt text

7. 配置项目标记

在GitLab中,常用的标记(也称标签或 Labels)有助于管理和组织你的项目及其问题(issues)和合并请求(merge requests)。比如常见的有:

  1. 优先级标签---High、Medium、Low
  2. 状态标签---To Do、In Progress、Done、Blocked
  3. 类型标签---Bug、Feature、Improvement、Documentation
  4. 技术标签---Java、Python、DevOps

7.1 新增标记

给项目my-gitlab-first-project设置标记,点击项目信息--标记,进入标记管理页面:
Alt text 点击新建标记,比如我创建一个Bug标记,点击创建标记按钮即可完成创建:
Alt text 创建后,在标记列表可以查看:
Alt text 如果点击后面的订阅按钮,其他开发人员提交了新的相关标记议题或合并请求,就会通知订阅的用户。

8. 使用合并请求

8.1 新建合并请求

jack的代码还在自己的分支上面,并未在master分支上生效,Gitlab提供合并请求功能,能够使得其他分支的代码合并到master上。 Alt text 使用jack账号登陆,点击新建合并请求:
Alt text 点击比较分支并继续按钮,进入合并请求表单页面,一般指派人是你的同事,他也是开发人员,审核者是领导比如tudou:
Alt text 表单下面是此次合并请求的代码信息,比如提交的日志,变更的代码,帮助我们更加清楚要合并的代码情况。 Alt text 创建完成后,跳转到合并请求信息显示页面:
Alt text

8.2 处理合并请求

使用tudou账号登陆,点击合并请求菜单,可以看到有一个合并请求等待处理:
Alt text 点击该合并合并链接进去,进入合并详情:
Alt text 点击同意,点击合并,会弹出警告框,提示当前合并的代码在运行流水线没通过,由于现在还没有配置Gitlab Runner,所有流水线都会失败,展示不用管流水线,点击Merge unverified changes按钮:
Alt text
Gitlab开始自动合并代码到master上,此次合并就算完成了:
Alt text

9. 使用议题

议题可以用来创建、分配和跟踪项目中的具体任务,记录软件中的bug和缺陷,便于开发人员进行修复。团队成员可以在议题中进行评论,讨论相关内容,从而形成良好的沟通。

9.1 新建议题

土豆登陆Gitlab,点击左边菜单议题:
Alt text 点击New Issue进入新建议题页面:
Alt text 点击创建议题后,议题创建成功:
Alt text

9.2 沟通议题

使用jack账号登陆,访问议题:
Alt text 点击进去,进行编辑议题:
Alt text 点击创建分支,回复一下议题:
Alt text

10. 发布版本

使用tudou账号登录,点击项目中部署->发布菜单:
Alt text 点击Create new release按钮,进入创建发布页面:
Alt text 点击tag name,没有tag可以创建tag:
Alt text 点击Create release按钮:
Alt text 版本就发布好了:
Alt text