简介:
GitLab是一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目,与Github类似。
Git 家族成员
- Git:是一种版本控制系统,是一个命令,是一种工具。
- Gitlib:是用于实现Git功能的开发库。
- Github:是一个基于Git实现的在线代码托管仓库,包含一个网站界面,向互联网开放。
- GitLab:是一个基于Git实现的在线代码仓库托管软件,你可以用gitlab自己搭建一个类似于Github一样的系统,一般用于在企业、学校等内部网络搭建git私服。
Gitlab的服务构成:
- Nginx:静态web服务器。
- gitlab-shell:用于处理Git命令和修改authorized keys列表
- gitlab-workhorse: 轻量级的反向代理服务器。
- logrotate:日志文件管理工具。
- postgresql:数据库。
- redis:缓存数据库。
- sidekiq:用于在后台执行队列任务(异步执行)
- unicorn:An HTTP server for Rack applications,GitLab Rails应用是托管在这个服务器上面的。
Gitlab 的工作流程:
-
GitLab Shell
两个作用:为GitLab处理Git命令、修改authorized keys列表。
当通过SSH访问GitLab Server时:
-
限制执行预定义好的Git命令
-
调用GitLab Rails API 检查权限
-
执行pre-receive钩子
-
执行你请求的动作 处理GitLab的post-receive动作
-
处理自定义的post-receive动作 当通过http(s)访问GitLab Server时:
-
如果你是从Git仓库拉取(pull)代码
GitLab Rails应用会全权负责处理用户鉴权和执行Git命令的工作
-
如果你是向Git仓库推送(push)代码
GitLab Rails应用既不会进行用户鉴权也不会执行Git命令,它会把以下工作交由GitLab Shell进行处理:
-
调用GitLab Rails API 检查权限
-
执行pre-receive钩子
-
执行你请求的动作
-
处理GitLab的post-receive动作
-
处理自定义的post-receive动作
-
GitLab Workhorse
GitLab Workhorse是一个敏捷的反向代理。它会处理一些大的HTTP请求,比如文件上传、文件下载、Git push/pull和Git包下载。其它请求会反向代理到GitLab Rails应用,即反向代理给后端的unicorn。
Gitlab环境部署
ECS配置要求:内存2G以上
手动部署:
第一步:百度搜索【清华镜像站】
第二步:点击进入【清华镜像站】
第三步:搜索框输入【gitLab】
第四步:点击【gitlab-ce】
第五步:进入【gitlab-ce】
第六步:点击【yum】
第七步:选择【e18】
第八步:选择要下载的【gitlab-ce-*-rpm】
第九步:下载【gitlab-ce-*-rpm】
第十步:【gitlab-ce-*-rpm】上传服务器
手动安装
- rpm -ivh gitlab-ce-10.1.4-ce.0.el6.x86_64.rpm 安装rpm
- gitlab-ctl reconfigure gitlab配置启动
- 修改 /etc/gitlab/gitlab.rb 的【external_url 的值 :值为gitlab 访问地址 ip+port eg: http://192.168.96.123:8800】
- gitlab-ctl reconfigure 让配置生效
- Gitlab-clt restart 重新启动gitlab
- 测试访问
Gitlab 汉化
Gitlab 使用
一,基本操作
-
登录
-
修改密码
第一步:点击个人信息【Settings】
第二步:点击左侧工具栏目【Password】
第三步:修改密码
第四步:Save password
二,项目管理
-
新建项目
第一步:点击【Your projects】
第二步:点击【New project】
第三步:输入项目信息
第四步:点击【Create project】
第五步:项目创建成功
2. 编辑或删除项目
三,用户管理(管理员使用,非管理员跳过此步骤)
-
新建用户
第一步:点击顶端的【Admin Area】
第二步:进入管理页面
第三步:点击左侧工具栏目【Users】
第四步:点击【New user】
第五步:输入用户信息
第六步:点击【Create user】
第七步:创建成功
-
设置密码
第一步:点击顶端的【Admin Area】
第二步:进入管理页面
第三步:点击左侧工具栏目【Users】
第四步:点击【Edit】
第五步:输入密码
第六步:点击【Save changes】
-
编辑/删除/锁定/解锁用户
编辑用户
第一步:点击顶端的【Admin Area】
第二步:进入管理页面
第三步:点击左侧工具栏目【Users】
第四步:点击【Edit】
第五步:修改用户信息
第六步:点击【Save changes】
删除用户
第四步:点击设置按钮
第五步:点击【Delete user】
第六步:输入用户名
第七步:点击【Delete user】
锁定用户
第七步:点击【Block user】
解锁用户
第五步:点击【Blocked】
第六步:点击设置按钮
第七步:点击【Unblock】
四,组管理(管理员使用,非管理员跳过此步骤)
-
新建组
第一步:点击【Group】
第二步:点击【Your group】
第三步:点击【New group】
第四步:输入组信息
第五步:点击【Create group】
第六步:组创建成功
2. #### 编辑或删除组
编辑组
第一步:点击顶端的【Admin Area】
第二步:点击【Groups】
第三步:点击【Edit】
第四步:编辑组信息
第五步:点击【Save change】
删除组
第三步:点击【Delete】
第四步:点击【确定】
3. #### 添加/删除组成员
添加组成员
第一步:点击【Group】
第二步:点击【Your group】
第三步:点击组
第四步:选择侧边栏【Members】
第五步:进入【Members】
第六步:选择要添加到组的用户
第六步:选择该用户在组里面的权限
第七步:选择过期时间
第八步:点击【Add to group】
第九步:检测是否加入到组成员中
删除组成员
第六步:选择删除按钮
第七步:点击【确定】
第八步:检测是否成功删除
-
修改成员的权限(owner用户操作)
第一步:点击【Group】
第二步:点击【Your group】
第三步:点击组
第四步:选择侧边栏【Members】
第五步:进入【Members】
第六步:修改权限
第七步:检查权限是否修改成功
-
从组管理添加项目
第一步:点击【Group】
第二步:点击【Your group】
第三步:点击组
第四步:点击【New project】
第六步:输入项目信息
第七步:点击【Create project】
第八步:检查是否添加成功
五,权限说明
- Guest(匿名用户) :创建项目、写留言薄
- Reporter(报告人):创建项目、写留言薄、拉项目、下载项目、创建代码片段
- Developer(开发者):创建项目、写留言薄、拉项目、下载项目、创建代码片段、创建合并请求、创建新分支、推送不受保护的分支、移除不受保护的分支 、创建标签、编写wiki
- Master(管理者):创建项目、写留言薄、拉项目、下载项目、创建代码片段、创建合并请求、创建新分支、推送不受保护的分支、移除不受保护的分支 、创建标签、编写wiki、增加团队成员、推送受保护的分支、移除受保护的分支、编辑项目、添加部署密钥、配置项目钩子
- Owner(所有者):创建项目、写留言薄、拉项目、下载项目、创建代码片段、创建合并请求、创建新分支、推送不受保护的分支、移除不受保护的分支 、创建标签、编写wiki、增加团队成员、推送受保护的分支、移除受保护的分支、编辑项目、添加部署密钥、配置项目钩子、开关公有模式、将项目转移到另一个名称空间、删除项目
六,添加免密验证
第一步:点击个人信息【Settings】
第二步:点击左侧工具栏目【SSH Keys】
第三步:将公钥粘贴,取名字
第四步:点击【Add key】
第六步:检查是SSH key 是否添加成功
七,添加webhook
第一步:选择【Projects】
第二步:选择【Your projects】
第三步:选择项目
第四步:进入项目
第五步:点击【Settings】
第六步:选择【Integrations】
第七步:jenkins 勾选【Trigger builds remotely】
第八步:添加jenkins user 【API Token】
第九步:输入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】
第十步:选择【Trigger】
第十一步:选择【SSL verification】
第十二步:选择【Save changes】
第十三步:检查是否添加成功
第十四步:测试 点击【Test】
第十五步:选择触发事件