Gitlab的基本介绍:
Gitlab是利用Ruby on Rails 一个开源的版本管理系统,实现一个自托管的git项目仓库,可通过web界面进行访问公开或私有的项目。
与GitHub类似,Gitlab能够浏览源代码、管理缺陷和注释、可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序Wall进行交流。
它还提供了一个代码片段收集功能可以轻松地实现代码复用,便于日后有需要的时候进行查找。
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)logratate:日志文件管理工具;
5)postgresql:数据库;
6)redis:缓存数据库;
7)sidekiq:用于在后台执行队列任务(异步执行);
8)unicorn:An HTTP Server for Rack applications,Gitlab Rails应用是托管在这个服务器上面的。
Gitlab工作流程:
Gitlab shell:
Gitlab shell有两个作用:为Gitlab处理git命令、修改authorized keys列表。
当通过ssh访问Gitlab Server的时候,Gitlab Shell会:
1)限制执行预定义好的Git命令:git push git pull git annex
2)调用Gitlab Rail API 检查权限;
3)执行pre-receive钩子(在Gitlab企业版中叫做Git钩子)
4)执行你请求的动作,处理Gitlab的post-receive动作
5)处理自定义的post-receive动作。
当通过https访问Gitlab Server的时候,工作流程取决于你是从Git仓库拉取pull代码还是向Git仓库推送push代码。
如果你是从Git仓库拉取pull代码,Gitlab Rails应用会全权处理用户鉴权和执行Git命令的工作。
如果你是向Git仓库推送(push)代码,GitLab Rails应用既不会进行用户鉴权也不会执行Git命令,它会把以下工作交由GitLab Shell进行处理:
调用GitLab Rails API 检查权限
执行pre-receive钩子(在GitLab企业版中叫做Git钩子)
执行你请求的动作
处理GitLab的post-receive动作
处理自定义的post-receive动作
GitLab Workhorse
GitLab Workhorse是一个敏捷的反向代理。它会处理一些大的HTTP请求,比如文件上传、文件下载、Git push/pull和Git包下载。其它请求会反向代理到GitLab Rails应用,即反向代理给后端的unicorn。
Gitlab安装:
请参考《安装Gitlab-ce指定版本》的博文。
Gitlab的常用命令:
sudo gitlab-ctl start # 启动所有gitlab组件
sudo gitlab-ctl stop # 停止所有gitlab组件
sudo gitlab-ctl restart # 重启所有组件
sudo gitlab-ctl status # 检查服务状态
sudo gitlab-ctl reconfigure # 重启服务;
sudo vim /etc/gitlab/gitlab.rb # 修改默认配置文件
gitlab-rake gitlab:check SANITIZE=true --trace # 检查gitlab
sudo gitlab-ctl tail # 查看日志
Gitlab使用:
登录Gitlab:
1、在浏览器中输入部署服务器的IP地址(192.168.17.150),即可访问到Gitlab的界面。
修改密码的事情,可以百度相关的文章。
创建项目:
在另外一个虚拟机(Linux系统)中(192.168.17.201)创建项目:
1)安装git工具:
yum install -y git
2)获取git版本:
git --version
3)生成密钥文件:使用ssh-keygen 生成密钥文件**.ssh/id_rsa.pub**。
生成公私钥文件。
4)在Gitlab的主页中创建一个项目:
项目创建成功。
5)添加ssh key导入步骤3中生成的密钥文件内容:
ssh key添加完成。
项目地址:该地址在进行clone操作的时候用的到:
简单配置:
1)配置使用git仓库的人员姓名:
git config --global user.name "changchunhua"
git config --global user.email "chang_chunhua@qq.com"
git clone http://192.168.17.150/root/test.git
直接在根目录下克隆该项目。
2)然后将test.sh添加到索引中:
可以看到test.sh文件已经上传到gitlab test项目中。
操作详细记录:
1)登录
输入自己的账号密码,即可登录。
2) 修改密码:
修改好root密码,然后登录成功。
3) 项目管理:
根据需要新建项目、新建组合和新建用户。
新建项目: 创建的时候可以选择在自己用户下创建或者在某个群组里创建。
项目名称:
项目描述:
可见性:库类别:
私有库:只有被赋予权限的用户可见;
内部库:登录用户可以下载;
公开库:所有人可以下载;
提示通过SSH方式拉取推送项目代码必须要导入SSH key,这个稍后再介绍。
项目地址有HTTP和SSH两种方式-------可发送给开发人员下载和初始化项目
4)用户管理:
先创建一个组:
testgroup创建成功。
创建用户user01:
user01用户已经创建成功。
在testgroup组中添加用户user01:
可见已经添加成功。
在testgroup的Members,我们可以编辑用户。
修改成员的权限
权限说明:
Guest:可以创建issue,发表评论,不能读写版本库
Reporter:可以克隆代码,不能提交,QA、PM可以赋予这个权限
Developer:可以克隆代码,开发,提交,push,普通开发可以授予该权限
Maintainer:可以创建项目,添加tag,保护分支,添加项目成员,编辑项目,核心开发可以授予该权限
Owner:可以设置值项目访问权限,Visibility Level,删除项目,迁移项目,管理组成员,开发组组长可以授予该权限
从组中添加项目:
已经选择了testgroup这个组。