一、Gitlab安装及相关操作

1.Gitlab简介
Gitlab是一个利用Ruby on Rails开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人的项目。Gitlab拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,非常易于浏览提交过的版本并提供一个文件历史库。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

官方网站:gitlab2.安装流程
(1)安装前提软件

[root@gitlab ~]# yum -y install curl policycoreutils openssh-server openssh-clients postfix

(2)下载清华gitlab安装包

[root@gitlab ~]# mkdir /gitlab
[root@gitlab ~]# cd /gitlab
[root@gitlab gitlab]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm
[root@gitlab gitlab]# yum -y install gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm

(3)修改配置文件,指定ip地址。

[root@gitlab gitlab]# vim /etc/gitlab/gitlab.rb
定位并修改为:
external_url 'http://192.168.229.187'

(4)配置启动gitlab

[root@gitlab gitlab]# gitlab-ctl reconfigure

这里需要注意的是,内存给大一点,最少4个G,不然在配置的时候会出现报错,还有就是如果打开界面出现502,检查80和8080端口是否被占用。
查看状态

[root@gitlab gitlab]# gitlab-ctl status
run: gitaly: (pid 36289) 13s; run: log: (pid 35155) 52s
run: gitlab-monitor: (pid 36305) 13s; run: log: (pid 35534) 40s
run: gitlab-workhorse: (pid 36262) 14s; run: log: (pid 34647) 71s
run: logrotate: (pid 34949) 59s; run: log: (pid 34948) 59s
run: nginx: (pid 34790) 65s; run: log: (pid 34789) 65s
run: node-exporter: (pid 35372) 46s; run: log: (pid 35371) 46s
run: postgres-exporter: (pid 36352) 12s; run: log: (pid 35934) 27s
run: postgresql: (pid 33430) 119s; run: log: (pid 33429) 119s
run: prometheus: (pid 36320) 12s; run: log: (pid 35754) 33s
run: redis: (pid 33198) 125s; run: log: (pid 33197) 125s
run: redis-exporter: (pid 35590) 39s; run: log: (pid 35589) 39s
run: sidekiq: (pid 34493) 77s; run: log: (pid 34492) 77s
run: unicorn: (pid 34316) 83s; run: log: (pid 34315) 83s

(5)gitlab服务管理命令(开启/关闭/重启)

gitlab-ctl start/stop/restart

3.Gitlab的基础设置
(1)登录gitlab

http://192.168.229.187

初始界面如下:

开始会让你设置登录密码。

android git 客户端 gitlab android客户端_android git 客户端


登录用户默认是root,密码是刚才设置的。

android git 客户端 gitlab android客户端_gitlab_02


登录后的页面如下:

android git 客户端 gitlab android客户端_linux_03


(2)取消注册功能

android git 客户端 gitlab android客户端_linux_04


android git 客户端 gitlab android客户端_git_05


android git 客户端 gitlab android客户端_git_06


android git 客户端 gitlab android客户端_gitlab_07


(3)修改登录欢迎界面

android git 客户端 gitlab android客户端_gitlab_08


android git 客户端 gitlab android客户端_开发人员_09


title处添加主题、description处添加描述、logo也可以自行设置,再次登录会看到设置的界面成功了。

android git 客户端 gitlab android客户端_android git 客户端_10


4.Gitlab的项目创建流程

(1)创建group

android git 客户端 gitlab android客户端_开发人员_11


Group path处填写一个名称、Group name处填写名称、description处进行组描述,然后点击最后的创建按钮即可。

android git 客户端 gitlab android客户端_开发人员_12


(2)创建用户

android git 客户端 gitlab android客户端_android git 客户端_13


android git 客户端 gitlab android客户端_android git 客户端_14


添加名字、用户名、邮箱,然后创建即可。

android git 客户端 gitlab android客户端_git_15


android git 客户端 gitlab android客户端_gitlab_16


点击edit–修改密码

android git 客户端 gitlab android客户端_android git 客户端_17


android git 客户端 gitlab android客户端_git_18


android git 客户端 gitlab android客户端_linux_19


(3)创建项目

android git 客户端 gitlab android客户端_git_20


android git 客户端 gitlab android客户端_git_21


选择创建的组

android git 客户端 gitlab android客户端_git_22


android git 客户端 gitlab android客户端_gitlab_23


android git 客户端 gitlab android客户端_gitlab_24


5.Gitlab中的组和项目有三种访问权限

Private:只有组成员才能看到

Internal:只要登录的用户就能看到

Public:所有人都能看到

6.上传ssh-key
本地用户创建秘钥:

[root@client1 ~]# ssh-keygen -t rsa

复制公钥内容:

[root@client1 ~]# cat /root/.ssh/id_rsa.pub

黏贴到web界面:

android git 客户端 gitlab android客户端_开发人员_25


android git 客户端 gitlab android客户端_git_26


android git 客户端 gitlab android客户端_linux_27


7.克隆下载项目,会在当前目录自动创建一个版本库目录

[root@client1 ~]# yum -y install git
[root@client1 ~]# git clone git@192.168.229.187:test/test.git

android git 客户端 gitlab android客户端_git_28


8.创建一个文件,再推送上传代码(管理员身份)

[root@client1 ~]# cd test
[root@client1 test]# git config --global user.email "zj@163.com"
[root@client1 test]# git config --global user.name "root"
[root@client1 test]# echo 123456 > new.txt
[root@client1 test]# git add .
[root@client1 test]# git commit -m "add new.txt"
[root@client1 test]# git push -u origin master

我们可以看到代码成功传到服务器了。

android git 客户端 gitlab android客户端_android git 客户端_29


9.在客户机,普通开发人员更新代码流程

需是项目中的成员,下面是如何向项目中添加成员。

android git 客户端 gitlab android客户端_gitlab_30


android git 客户端 gitlab android客户端_git_31


android git 客户端 gitlab android客户端_android git 客户端_32


android git 客户端 gitlab android客户端_开发人员_33


android git 客户端 gitlab android客户端_开发人员_34


(1)上传ssh秘钥

本地用户创建秘钥:

[root@client2 ~]# ssh-keygen -t rsa

复制公钥内容:

[root@client2 ~]# cat /root/.ssh/id_rsa.pub

使用之前创建的用户zj登录web:

右上角--用户--settings--SSH Keys

(2)关联远程仓库

[root@client2 ~]# mkdir /data
[root@client2 ~]# cd /data
[root@client2 data]# git init
[root@client2 data]# git remote add origin git@192.168.229.187:test/test.git

(3)下载同步代码

[root@client2 data]# git pull origin master
[root@client2 data]# ls
new.txt

(4)创建分支,修改代码

[root@client2 data]# git config --global user.email "zj@163.com"
[root@client2 data]# git config --global user.name "zj"
[root@client2 data]# git checkout -b dev
[root@client2 data]# echo 666666 > new1.txt
[root@client2 data]# git add .
[root@client2 data]# git commit -m "add new1.txt"

(5)推送dev分支(普通用户无权推送master)

[root@client2 data]# git push -u origin dev

web页面项目中选择dev分支查看上传成功。

android git 客户端 gitlab android客户端_git_35


(6)普通开发人员在web界面创建merge请求

android git 客户端 gitlab android客户端_git_36


android git 客户端 gitlab android客户端_linux_37


android git 客户端 gitlab android客户端_android git 客户端_38


android git 客户端 gitlab android客户端_android git 客户端_39


(7)切换到管理员登录,进入项目,同意merge请求。

左侧面板–merge requests–merge,点进去之后,可以勾选上remove source branch,点击merge即可。

android git 客户端 gitlab android客户端_开发人员_40


android git 客户端 gitlab android客户端_android git 客户端_41


android git 客户端 gitlab android客户端_android git 客户端_42


android git 客户端 gitlab android客户端_linux_43


10.Gitlab用户在组中有五种权限

Guest:可以创建issue、发表评论,不能读写版本库

Reporter:可以克隆代码,不能提交,测试、产品经理可以赋予这个权限

Developer:可以克隆代码、开发、提交、push,开发人员可以赋予这个权限

Master:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD
负责人可以赋予这个权限

Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理
组成员,开发组leader可以赋予这个权限