gitLab 使用教程

2,505 阅读7分钟

简介:

GitLab是一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目,与Github类似。

Git 家族成员

  1. Git:是一种版本控制系统,是一个命令,是一种工具。
  2. Gitlib:是用于实现Git功能的开发库。
  3. Github:是一个基于Git实现的在线代码托管仓库,包含一个网站界面,向互联网开放。
  4. GitLab:是一个基于Git实现的在线代码仓库托管软件,你可以用gitlab自己搭建一个类似于Github一样的系统,一般用于在企业、学校等内部网络搭建git私服。

Gitlab的服务构成:

  1. Nginx:静态web服务器。
  2. gitlab-shell:用于处理Git命令和修改authorized keys列表
  3. gitlab-workhorse: 轻量级的反向代理服务器。
  4. logrotate:日志文件管理工具。
  5. postgresql:数据库。
  6. redis:缓存数据库。
  7. sidekiq:用于在后台执行队列任务(异步执行)
  8. unicorn:An HTTP server for Rack applications,GitLab Rails应用是托管在这个服务器上面的。

Gitlab 的工作流程:

image.png

  1. GitLab Shell

两个作用:为GitLab处理Git命令、修改authorized keys列表。

当通过SSH访问GitLab Server时:

  1. 限制执行预定义好的Git命令

  2. 调用GitLab Rails API 检查权限

  3. 执行pre-receive钩子

  4. 执行你请求的动作 处理GitLab的post-receive动作

  5. 处理自定义的post-receive动作 当通过http(s)访问GitLab Server时:

  6. 如果你是从Git仓库拉取(pull)代码

    GitLab Rails应用会全权负责处理用户鉴权和执行Git命令的工作

  7. 如果你是向Git仓库推送(push)代码

    GitLab Rails应用既不会进行用户鉴权也不会执行Git命令,它会把以下工作交由GitLab Shell进行处理:

  8. 调用GitLab Rails API 检查权限

  9. 执行pre-receive钩子

  10. 执行你请求的动作

  11. 处理GitLab的post-receive动作

  12. 处理自定义的post-receive动作

  13. GitLab Workhorse

GitLab Workhorse是一个敏捷的反向代理。它会处理一些大的HTTP请求,比如文件上传、文件下载、Git push/pull和Git包下载。其它请求会反向代理到GitLab Rails应用,即反向代理给后端的unicorn。

Gitlab环境部署

ECS配置要求:内存2G以上

手动部署:

第一步:百度搜索【清华镜像站】

image.png 第二步:点击进入【清华镜像站】

image.png 第三步:搜索框输入【gitLab】

image.png

第四步:点击【gitlab-ce】

image.png

第五步:进入【gitlab-ce】

image.png 第六步:点击【yum】

image.png

第七步:选择【e18】

image.png 第八步:选择要下载的【gitlab-ce-*-rpm】

image.png 第九步:下载【gitlab-ce-*-rpm】

image.png 第十步:【gitlab-ce-*-rpm】上传服务器

image.png

手动安装

  1. rpm -ivh gitlab-ce-10.1.4-ce.0.el6.x86_64.rpm 安装rpm
  2. gitlab-ctl reconfigure gitlab配置启动
  3. 修改 /etc/gitlab/gitlab.rb 的【external_url 的值 :值为gitlab 访问地址 ip+port eg: http://192.168.96.123:8800】

image.png

  1. gitlab-ctl reconfigure 让配置生效
  2. Gitlab-clt restart 重新启动gitlab
  3. 测试访问

image.png

Gitlab 汉化

gitlab.com/xhang/gitla…

Gitlab 使用

一,基本操作

  1. 登录

image.png

  1. 修改密码

第一步:点击个人信息【Settings】

image.png

第二步:点击左侧工具栏目【Password】

image.png 第三步:修改密码

image.png 第四步:Save password

image.png

二,项目管理

  1. 新建项目

第一步:点击【Your projects】

image.png 第二步:点击【New project】

image.png 第三步:输入项目信息

image.png 第四步:点击【Create project】

image.png 第五步:项目创建成功

image.png 2. 编辑或删除项目

三,用户管理(管理员使用,非管理员跳过此步骤)

  1. 新建用户

第一步:点击顶端的【Admin Area】

image.png 第二步:进入管理页面

image.png 第三步:点击左侧工具栏目【Users】

image.png 第四步:点击【New user】

image.png 第五步:输入用户信息

image.png 第六步:点击【Create user】

image.png 第七步:创建成功

image.png

  1. 设置密码

第一步:点击顶端的【Admin Area】

image.png 第二步:进入管理页面

image.png 第三步:点击左侧工具栏目【Users】

image.png 第四步:点击【Edit】

image.png 第五步:输入密码

image.png 第六步:点击【Save changes】

image.png

  1. 编辑/删除/锁定/解锁用户

编辑用户

第一步:点击顶端的【Admin Area】

image.png 第二步:进入管理页面

image.png 第三步:点击左侧工具栏目【Users】

image.png 第四步:点击【Edit】

image.png 第五步:修改用户信息

image.png 第六步:点击【Save changes】

image.png 删除用户

第四步:点击设置按钮

image.png 第五步:点击【Delete user】

image.png 第六步:输入用户名

image.png 第七步:点击【Delete user】

image.png

锁定用户

第七步:点击【Block user】

image.png

解锁用户

第五步:点击【Blocked】

image.png 第六步:点击设置按钮

image.png 第七步:点击【Unblock】

image.png

四,组管理(管理员使用,非管理员跳过此步骤)

  1. 新建组

第一步:点击【Group】

image.png

第二步:点击【Your group】

image.png 第三步:点击【New group】

image.png 第四步:输入组信息

image.png 第五步:点击【Create group】

image.png 第六步:组创建成功

image.png 2. #### 编辑或删除组

编辑组

第一步:点击顶端的【Admin Area】

image.png 第二步:点击【Groups】

image.png 第三步:点击【Edit】

image.png 第四步:编辑组信息

image.png 第五步:点击【Save change】

image.png

删除组

第三步:点击【Delete】

image.png 第四步:点击【确定】

image.png 3. #### 添加/删除组成员

添加组成员

第一步:点击【Group】

image.png 第二步:点击【Your group】

image.png 第三步:点击组

image.png 第四步:选择侧边栏【Members】

image.png 第五步:进入【Members】

image.png 第六步:选择要添加到组的用户

image.png 第六步:选择该用户在组里面的权限

image.png 第七步:选择过期时间

image.png 第八步:点击【Add to group】

image.png 第九步:检测是否加入到组成员中

image.png

删除组成员

第六步:选择删除按钮

image.png 第七步:点击【确定】

image.png 第八步:检测是否成功删除

image.png

  1. 修改成员的权限(owner用户操作)

第一步:点击【Group】

image.png 第二步:点击【Your group】

image.png 第三步:点击组

image.png 第四步:选择侧边栏【Members】

image.png 第五步:进入【Members】

image.png 第六步:修改权限

image.png 第七步:检查权限是否修改成功

image.png

  1. 从组管理添加项目

第一步:点击【Group】

image.png 第二步:点击【Your group】

image.png 第三步:点击组

image.png 第四步:点击【New project】

image.png 第六步:输入项目信息

image.png 第七步:点击【Create project】

image.png 第八步:检查是否添加成功

image.png

五,权限说明

  1. Guest(匿名用户) :创建项目、写留言薄
  2. Reporter(报告人):创建项目、写留言薄、拉项目、下载项目、创建代码片段
  3. Developer(开发者):创建项目、写留言薄、拉项目、下载项目、创建代码片段、创建合并请求、创建新分支、推送不受保护的分支、移除不受保护的分支 、创建标签、编写wiki
  4. Master(管理者):创建项目、写留言薄、拉项目、下载项目、创建代码片段、创建合并请求、创建新分支、推送不受保护的分支、移除不受保护的分支 、创建标签、编写wiki、增加团队成员、推送受保护的分支、移除受保护的分支、编辑项目、添加部署密钥、配置项目钩子
  5. Owner(所有者):创建项目、写留言薄、拉项目、下载项目、创建代码片段、创建合并请求、创建新分支、推送不受保护的分支、移除不受保护的分支 、创建标签、编写wiki、增加团队成员、推送受保护的分支、移除受保护的分支、编辑项目、添加部署密钥、配置项目钩子、开关公有模式、将项目转移到另一个名称空间、删除项目

六,添加免密验证

第一步:点击个人信息【Settings】

image.png

第二步:点击左侧工具栏目【SSH Keys】

image.png 第三步:将公钥粘贴,取名字

image.png 第四步:点击【Add key】

image.png 第六步:检查是SSH key 是否添加成功

image.png

七,添加webhook

第一步:选择【Projects】

image.png 第二步:选择【Your projects】

image.png 第三步:选择项目

image.png 第四步:进入项目

image.png 第五步:点击【Settings】

image.png 第六步:选择【Integrations】

image.png 第七步:jenkins 勾选【Trigger builds remotely】

image.png 第八步:添加jenkins user 【API Token】

image.png 第九步:输入webhooks 的url

url :http://liuch:11ec281*********79760088cea628e86@jenkins.yidi***.com/job/ydltest_yidi****** */build?token=1234567

解释:

liuch : jenkins 登录的的用户名称

11ec281*****79760088cea628e86:第八步添加的 jenkins user 【API Token】

jenkins.yidi.com: jenkins 的url***

job/ydltest_yidi*** */build:项目地址

token=1234567 : jenkins 的Trigger builds remotely 的【Authentication Token】

image.png 第十步:选择【Trigger】

image.png 第十一步:选择【SSL verification】

image.png 第十二步:选择【Save changes】

image.png 第十三步:检查是否添加成功

image.png 第十四步:测试 点击【Test】

image.png 第十五步:选择触发事件

image.png