Linux——Gitlab的使用

GitLab

​ Gitlab 是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的 Git 项目仓库,可通过Web 界面进行访问公开的或者私人的项目

官方网站:https://about.gitlab.com

环境

主机名IP
gitlab192.168.1.20
client01192.168.1.19
client02192.168.1.11

配置gitlab

1.安装前提软件

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

2.下载gitlab安装包

[root@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 ~]#  yum -y install gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm

3.修改配置文件,指定ip地址

[root@gitlab ~]# vim /etc/gitlab/gitlab.rb 
修改:
external_url 'http://192.168.1.20‘

5.配置启动 gitlab

[root@gitlab ~]# gitlab-ctl reconfigure    //配置启动gitlab
[root@gitlab ~]#  gitlab-ctl status   //查看状态
run: gitaly: (pid 19378) 14878s; run: log: (pid 18940) 14914s
run: gitlab-monitor: (pid 19395) 14878s; run: log: (pid 19113) 14906s
run: gitlab-workhorse: (pid 19366) 14879s; run: log: (pid 18708) 14932s
run: logrotate: (pid 89443) 520s; run: log: (pid 18869) 14920s
run: nginx: (pid 18789) 14926s; run: log: (pid 18788) 14926s
run: node-exporter: (pid 19064) 14908s; run: log: (pid 19063) 14908s
run: postgres-exporter: (pid 19426) 14877s; run: log: (pid 19282) 14892s
run: postgresql: (pid 18318) 14970s; run: log: (pid 18317) 14970s
run: prometheus: (pid 19413) 14877s; run: log: (pid 19220) 14898s
run: redis: (pid 18195) 14977s; run: log: (pid 18194) 14977s
run: redis-exporter: (pid 19169) 14900s; run: log: (pid 19168) 14900s
run: sidekiq: (pid 18648) 14938s; run: log: (pid 18647) 14938s
run: unicorn: (pid 18578) 14944s; run: log: (pid 18577) 14944s
[root@gitlab ~]#  gitlab-ctl start/stop/restart  //gitlab服务管理命令(开启/关闭/重启)

Gitlab网页管理

1.登录gitlab

在先设置密码,12345678,再次确认 12345678

用户名:root

密码:12345678

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dw9psuze-1595329160556)(C:\Users\Administrator\Desktop\照片\gitlab\1.png)]

2.取消登录页面注册功能

登录gitlab >> admin area(顶部菜单栏小扳手图 >> 左侧面板settings >> Sign-up Restrictions >> 去除勾选sign-up enabled >> 下拉选save保存

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ucrJYk2o-1595329160559)(C:\Users\Administrator\Desktop\照片\gitlab\2.png)]

3.修改登录欢迎页面

登录gitlab >> admin area >> Appearance >> 填写管理员联系方式和logo >> save(保存)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7ZwhEufu-1595329160560)(C:\Users\Administrator\Desktop\照片\gitlab\3.png)]

设置完的效果图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gT9HAFOZ-1595329160562)(C:\Users\Administrator\Desktop\照片\gitlab\4.png)]

案例

项目创建

1.项目创建流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YpNGfvMU-1595329160564)(C:\Users\Administrator\Desktop\照片\gitlab\5.png)]

(1)创建group(组)

登录gitlab >> admin area >> new group

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vtVorgJC-1595329160565)(C:\Users\Administrator\Desktop\照片\gitlab\6.png)]

(2)创建user(用户)

登录gitlab >> admin area >> new user >> 添加用户名、邮箱 >> create >> edit >> 修改密码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f3pZpZqE-1595329160565)(C:\Users\Administrator\Desktop\照片\gitlab\7.png)]

(3)创建项目

登录gitlab >> admin area >> new project >> 注意选择组

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-If89rVHn-1595329160566)(C:\Users\Administrator\Desktop\照片\gitlab\8.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z7u9QczK-1595329160567)(C:\Users\Administrator\Desktop\照片\gitlab\9.png)]

Gitlab中的组对项目有三种访问权限:

权限解释
Private只有组成员才能看到
Interna只要登录的用户就能看到
Public所有人都能看到

(4)将成员添加进组

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XEntSQRW-1595329160568)(C:\Users\Administrator\Desktop\照片\gitlab\10.png)]

将wangwu添加到accp中,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MkghZ8Yi-1595329160569)(C:\Users\Administrator\Desktop\照片\gitlab\11.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IQqkHmww-1595329160570)(C:\Users\Administrator\Desktop\照片\gitlab\12.png)]

Gitlab用户在组中有五种权限:

权限解释
Guest可以创建issue、发表评论,不能读写版本库
Reporter可以克隆代码,不能提交,测试、产品经理可以赋予这个权限
Developer可以克隆代码、开发、提交、push,开发人员可以赋予这个权限
Master可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD负责人可以赋予这个权限
Owner可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组leader可以赋予这个权限

核心开发人员更新代码流程(管理员)

[root@client01 mengya]# git config --global user.name "client01"
[root@client01 mengya]# git config --global user.email  "client01@163.com"
[root@localhost ~]# ssh-keygen -t rsa   //创建密钥
[root@client01 ~]# cat /root/.ssh/id_rsa.pub  //复制公钥
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDlwRgAZVenUMB7r0GTsYBpMdtM2RPMF19I9nSOihMSZz5p5N0OZg3QdN4uEcv0CFV5/SZCu3bAB3xfUkOSr9vzaO5mPW+3582f4YCSkNX+x5Nt0NoakUDNgqtZzWbbCsbL5jFrI+Rvi/RMWq+QGrpl3RIoNSQr0EPYt6sf4ay9U54sw0jivvsZ772Z9xdM5viV0DIy2vs1uWbG5knb3VkN7RYwgVbTrv4tYCRxTX47BX7wRSTFfb4G87JXN2YxB/pVLXxOmWqhJ4CjAUu+hgcHVhnPlX2goSNgWsOp968+yyngR8KPtwSiB0TfknAAxsAsJyL1PHptYaVfiTNZ6Qm1 root@client01

在这里插入图片描述
在这里插入图片描述

[root@client01 ~]# git clone git@192.168.1.20:accp/mengya.git //克隆下载项目
正克隆到 'mengya'...
The authenticity of host '192.168.1.20 (192.168.1.20)' can't be established.
ECDSA key fingerprint is SHA256:MnsIsq7n/9t5QHT4m95cWHJRxBrBQH5PUQ8YjcFJkfs.
ECDSA key fingerprint is MD5:24:5a:1e:0b:3a:20:32:a8:c0:5d:1a:03:da:26:e6:65.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.20' (ECDSA) to the list of known hosts.
warning: 您似乎克隆了一个空版本库。
[root@client01 ~]# cd mengya/
[root@client01 mengya]# echo 123123 > new.txt
[root@client01 mengya]# echo 123123 > new1.txt
[root@client01 mengya]# echo 123123 > new2.txt
[root@client01 mengya]# git add .
[root@client01 mengya]# git commit  -m "add new.txt"
[root@client01 mengya]# git commit -m "add new.txt"
[master(根提交) 1a09815] add new.txt
 3 files changed, 3 insertions(+)
 create mode 100644 new.txt
 create mode 100644 new1.txt
 create mode 100644 new2.txt
[root@client01 mengya]# git push -u origin master 
Counting objects: 3, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 221 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@192.168.1.20:accp/mengya.git
 * [new branch]      master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。

普通开发人员更新代码流程(wangwu)

更改wangwu在组中的权限

[root@client02 data]# git config --global user.name "wangwu"
[root@client02 data]# git config --global user.email "wangwu@163.com"
[root@client02 ~]# ssh-keygen -t rsa	// 创建本地秘钥
[root@client02 ~]# cat /root/.ssh/id_rsa.pub //复制公钥
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC99Y7Rd5ipdBJyql8xnHwrn+UMuyFqmTWjZhpY9JITowjutW3wt1THvBGh+8r7XRnuf2/3Pu02tnDhe3Nr/LE6B7GHNvjInGgJtXwIHlJxgO79z1xxv8YSEZiRS9JvJ0bMN4h0PJqclbnx52BC3cdycl75efx28wMczX3/Vb5r3iYXVLRaz141xhtKuy24qBjo6WJdlMNUhyT4vf73vmZRTBrDLCFXq+XVfoqJYIr54IVJkKFyfopm0kRlfINMUJPOjoLWzl+cj3Tfd30AvrhuSpO1UPA0ty46u59RsVYb4pcMNE+nZtDr7IL3OPxwGM90xPPPmkNgsdGKHxHVavPD root@client02

切换wangwu登录 ,粘贴公钥

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ayTBo3g3-1595329160572)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1595324818202.png)]

关联远程仓库
[root@client02 ~]# mkdir /data
[root@client02 ~]# cd /data
[root@client02 data]# git init
Initialized empty Git repository in /data/.git/
[root@client02 data]# git remote add origin git@192.168.1.20:accp/mengya.git  //关联远程仓库
[root@client02 data]# git pull origin master  //下载同步代码
The authenticity of host '192.168.1.20 (192.168.1.20)' can't be established.
ECDSA key fingerprint is SHA256:MnsIsq7n/9t5QHT4m95cWHJRxBrBQH5PUQ8YjcFJkfs.
ECDSA key fingerprint is MD5:24:5a:1e:0b:3a:20:32:a8:c0:5d:1a:03:da:26:e6:65.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.20' (ECDSA) to the list of known hosts.
remote: Counting objects: 8, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 8 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (8/8), done.
From 192.168.1.20:accp/mengya
 * branch            master     -> FETCH_HEAD

创建分支,修改代码

[root@clien02 data]# git checkout -b wang
Switched to a new branch 'wang'
[root@clien02 data]# echo 222 > aa.txt
[root@clien02 data]# git add aa.txt 
[root@clien02 data]# git commit -m "add aa.txt"
[wang c68b837] add aa.txt
 1 file changed, 1 insertion(+)
 create mode 100644 aa.txt

推送dev分支 (普通用户无权推送master)
[root@client02 data]# git push -u origin wang
[root@clien02 data]# git push -u origin wang
Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 260 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: 
remote: To create a merge request for wang, visit:
remote:   http://192.168.1.20/accp/mengya/merge_requests/new?merge_request%5Bsource_branch%5D=wang
remote: 
To git@192.168.1.20:accp/mengya.git
 * [new branch]      wang -> wang
Branch wang set up to track remote branch wang from origin.

wangwu在web界面创建merge请求

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o1k5MptZ-1595329160573)(C:\Users\Administrator\Desktop\照片\gitlab\15.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mxIBIwp5-1595329160574)(C:\Users\Administrator\Desktop\照片\gitlab\16.png)]

切换回管理员账户,同意merge请求

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值