Gitlab用户权限管理

简介:

在安装完毕gitlab后,登录到页面后,我们可以看到是没有任何项目,而且只有一个用户。在使用的时候,需要创建项目,而且会有对应的用户在项目中。下面练习这个操作

- 新建用户组

1、点击右上角的扳手按钮

2、在弹出的对话框中选择 new group

3、Private:只有授权的用户才可以看到

Internal:只要是登录上来的用户就可以看到

Public:任何组和项目都可以看到

wKiom1kZNDSizXmyAAC5uC_K1as001.png

wKioL1kZNDXANUGSAAEm8W0wwd0354.png

wKiom1kZNDbgnSv9AADs6AmLAGc864.png

- 组授权

1、可以看到创建完组以后,可以给组内添加成员。下面创建几个用户

tips:一个组可以有多个项目

- 用户创建

1、点击右上角的扳手按钮

2、在弹出的对话框中选择 new user,下面创建了一个管理用户GYH,两个普通用户YH01和YH02

wKiom1kZNU7wq1VaAAAvl8BbUpE270.png-wh_50



给用户添加到授权组中,并修改权限

wKiom1kZNgWADabsAACdHE8PaV0632.png-wh_50

如图,这样我们就把GYH用户添加到Group1组中,并给予了master权限

- 创建项目

1、点击右上角的扳手按钮

2、在弹出的对话框中选择 new project

3、选择项目拥有者

4、创建完项目,要授权项目

wKiom1kZNsXjC-EdAADUD12oxtA973.png-wh_50

当我们创建完毕后,会有一个提示信息,如下,告知我们需要配置了ssh才能使用ssh协议来push或者pull这个项目

1
You won't be able to pull or push project code via SSH  until  you add an SSH key to your profile

下面我们就要对这个项目做权限处理,让它可以通过ssh来pull或者push动作

wKioL1kZOFKBYV2ZAACGIJkSi9w707.png

wKiom1kZOFPz5dxyAACbLYGIutY768.png


点击到上面的位置后,我们需要登录到需要授权连接到gitlab的设备上面。来复制密钥到gitlab上面。

下面以Linux设备ip为56.11为例,登录到此设备上

通过ssh-keygen 一路回车来生成密钥,然后拷贝pul公钥到gitlab上去

wKiom1kZOXqzxZNdAACnwNlDF7M648.png-wh_50

wKiom1kZOXvAHqNlAAEnK5LUzJE930.png-wh_50


点击Addkey按钮后,就添加成功!!

这里需要注意到是,gitlab上面登录的账号是YH01 是在这个账号下添加到SSH key

如果不添加上面的ssh的话,你clone的时候会提示错误:错误提示如下图

wKioL1kZOg_hoQATAAI4qttziFc209.png-wh_50

给项目添加授权用户

wKioL1kZRgqDTuEZAACtEmx_lCs268.png

添加完毕后,这个项目拥有了4个用户,其中两个是组里面继承过来的,另外两个是这个项目的用户,如图

wKioL1kZRq7DSAEaAADYBXjjojk294.png-wh_50

当完成上面的设置后,使用YH01账号登录后,在登录界面就能看到他所拥有的项目了

wKiom1kZR1bD4y6EAABZEORHEsU660.png-wh_50

这个时候就可以从客户通过git glone来下载项目了

1
2
3
4
5
6
7
8
9
10
11
12
[root@linux-node1 ~] # git clone git@192.168.56.11:Group1/app1.git
Cloning into  'app1' ...
The authenticity of host  '192.168.56.11 (192.168.56.11)'  can't be established.
ECDSA key fingerprint is 28:3e:e9:97:c9:ff:33:16:41:23:0a:14:30:7c:5c:7f.
Are you sure you want to  continue  connecting ( yes /no )?  yes
Warning: Permanently added  '192.168.56.11'  (ECDSA) to the list of known hosts.
warning: You appear to have cloned an empty repository.
Checking connectivity...  done .
[root@linux-node1 ~] # ll
total 277436
-rw-------.  1 root root       990 Dec 26 18:21 anaconda-ks.cfg
drwxr-xr-x   3 root root        17 May 14 22:30 app1

这里由于app1项目是一个空的目录,下面我们在这个目录上面新建一个文件readme

然后使用git pull来测试拉取

1
2
3
4
5
6
7
8
9
10
11
12
[root@linux-node1 app1] # git pull
remote: Counting objects: 3,  done .
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3 /3 ),  done .
From 192.168.56.11:Group1 /app1
  * [new branch]      master     -> origin /master
[root@linux-node1 app1] # ll
total 4
-rw-r--r-- 1 root root 47 May 14 22:37 readme
[root@linux-node1 app1] # cat readme 
readme创建一个床主主峰之
#这里可以看到,把master上面的readme文件拉取了下来了


二 windows客户端建立ssh免密钥登录

1、安装工具

1
Git-2.7.2-32-bit_setup.1457942412.exe

2、在一个目录里面选择右键,选择“Git Bash Here”,会弹出一个shell窗口,这个窗口里面执行和Linux一样的ssh密钥生成命令。结果也会生成一个密钥

1
2
3
4
5
Tony@Tony-PC MINGW32 ~/. ssh
cat  id_rsa.pub
ssh -rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCxfaZna8H+91hB4+GYPI2RcOzZhDleHx8sK8po5bq5wwk+tgRUSGQiLg8mA+HAxSIueylsKA0sfBCajP9k2hJ05vaOxr+UOqZ0yEytYqlQs0WIgX+VOAwkJDwGYgeZ7jZ3N0knem4GK8NRSWeoSwXseoZs9ddeFk3YVAaVykLDDngZ0YKsBkP7rjPn0JnFau8Me75cfIjuTnMVYPGY5YPJnN9MULjQvZB9mJ34E05a /4cAXZBSVKtumasBnIjTIbRFNVxcRjDohNdak1kZgdmOwMSyeCX +ADcV5vwgGZNxxWkRpOFV+W9vI /NqIpGktj7HD12XXtzxi8nnuozGe0SL  Tony@Tony-PC
 
Tony@Tony-PC MINGW32 ~/. ssh

3、把windows上面这个加到YH02用户上面

4、在gitlab上用YH02登录上去,在profiles setting设置里面添加SSH Key添加上去,

wKiom1kZTESxzveLAADw0_Zlzng495.png-wh_50

5、从windows客户端上pull代码下来。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Tony@Tony-PC MINGW32 ~/. ssh
$ git clone git@192.168.56.11:Group1 /app1 .git
Cloning into  'app1' ...
The authenticity of host  '192.168.56.11 (192.168.56.11)'  can't be established.
ECDSA key fingerprint is SHA256:l8F7OnGgtB8t1VEWnooak1oCP6UsZ3GJx1MPhssMv04.
Are you sure you want to  continue  connecting ( yes /no )?  yes
Warning: Permanently added  '192.168.56.11'  (ECDSA) to the list of known hosts.
remote: Counting objects: 3,  done .
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3 /3 ),  done .
Checking connectivity...  done .
 
Tony@Tony-PC MINGW32 ~/. ssh
$ ll
total 6
drwxr-xr-x 1 Tony 197121    0 五月 15 14:36 app1/
-rw-r--r-- 1 Tony 197121 1675 五月 14 11:34 id_rsa
-rw-r--r-- 1 Tony 197121  394 五月 14 11:34 id_rsa.pub
-rw-r--r-- 1 Tony 197121  175 五月 15 14:36 known_hosts
 
Tony@Tony-PC MINGW32 ~/. ssh
cd  app1/
 
Tony@Tony-PC MINGW32 ~/. ssh /app1  (master)
$ ll
total 1
-rw-r--r-- 1 Tony 197121 49 五月 15 14:36 readme
 
Tony@Tony-PC MINGW32 ~/. ssh /app1  (master)
cat  readme
readme创建一个床主主峰之
 
master brach
Tony@Tony-PC MINGW32 ~/. ssh /app1  (master)
$

Deploy Key

wKioL1kZTZWxF5QVAAC5auxoqrc716.png

每个项目都有个deploy key,项目部署公钥(Deploy Key)允许通过SSH协议以只读的方式访问项目,不需要输入密码,而且数据是使用你上传的公钥加密传输的。与HTTPS协议相比,SSH协议的数据传输效率要更高和稳定些,支持超大项目数据的传输。使用depoly key 后发现只能pull 不能push

这个一般是给jenkins使用的。

三 gitlab开发计划实施

假设现在已经有了一个开发计划,怎么做gitlab上实施这个开发计划那????

这里我们使用管理账号GYH来当项目经理,登录到gitlab上面

在左面的菜单中选择Milestones里程碑,--》new milestones

wKiom1kZUDuimqVKAABvEhyxdJo313.png-wh_50

新建新的issue来分配任务

wKiom1kZURLDB4CeAADnbLuSBbA724.png-wh_50

依次创建4个issue

wKiom1kZUd7BmoTsAAD4oWNPqF8916.png-wh_50

当我们使用YH01或者YH02登录到gitlab时候就能看到分配给自己的任务

wKioL1kZUkeQnPfBAACUIgGJ-LI400.png-wh_50

开发者开始开发的流程

1、首先要创建一个新的分支

(1)可以通过命令创建分支

1
2
3
4
5
[root@linux-node1 app1] # git checkout -b shouye
Switched to a new branch  'shouye'
[root@linux-node1 app1] # git status
On branch shouye
nothing to commit, working directory clean


(2)在页面直接创建分支,并且会以当前issue的ID来命名分支

wKioL1kZU93BZAwGAACgTsLavUc063.png-wh_50


2、在分支上开发程序,并推送到分支上

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@linux-node1 app1] # echo "shou ye wen jian" >index.html
[root@linux-node1 app1] # git add .
[root@linux-node1 app1] # git commit -m "shouye"
[shouye 1f9cf77] shouye
  file  changed, 1 insertion(+)
  create mode 100644 index.html
[root@linux-node1 app1] # git log
commit 1f9cf77118cc8c8ec704bc1458db128fc25f39d2
Author: kesungang <605937099@qq.com>
Date:   Sun May 14 23:25:17 2017 +0800
 
     shouye
 
commit 34b7e533c414b0f27ab2d1e209e145bc5d0afd1b
Author: YH01 <yh01@126.com>
Date:   Sun May 14 22:35:42 2017 +0800
 
     first commit  for  master
[root@linux-node1 app1] # git push origin shouye
Counting objects: 3,  done .
Delta compression using up to 2 threads.
Compressing objects: 100% (2 /2 ),  done .
Writing objects: 100% (3 /3 ), 284 bytes | 0 bytes /s done .
Total 3 (delta 0), reused 0 (delta 0)
To git@192.168.56.11:Group1 /app1 .git
  * [new branch]      shouye -> shouye

gitlab上在用户的项目里面可以查看到分支,并且点击分支,可以看到你的commit记录

wKioL1kZVRjALVv1AADCMFUdC1g228.png-wh_50

3、开发完毕,分支请求合并到master分支上去

(1) 、可以从页面上的shouye分支,点击右边的Merge Request

wKioL1kZViPC7MJlAADT99jW-4Q139.png-wh_50

(2)GYH项目经理登录到gitlab上,可以从有上面的小铃铛,提示有任务,如果检查没有问题,接受合并请求

wKioL1kZVwiiY8CdAAFNgK9AusU677.png-wh_50

(3)测试正常合并的,可以关闭分支了

(4)分支更新(其他人就可以从master上面拉下最新内容了)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@linux-node1 app1] # git checkout master
Switched to branch  'master'
Your branch is up-to- date  with  'origin/master' .
[root@linux-node1 app1] # ll
total 4
-rw-r--r-- 1 root root 47 May 14 22:37 readme
[root@linux-node1 app1] # git pull
remote: Counting objects: 1,  done .
remote: Total 1 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (1 /1 ),  done .
From 192.168.56.11:Group1 /app1
    34b7e53..1f84445  master     -> origin /master
  * [new branch]      1-         -> origin /1-
Updating 34b7e53..1f84445
Fast-forward
  index.html | 1 +
  file  changed, 1 insertion(+)
  create mode 100644 index.html
[root@linux-node1 app1] # ll
total 8
-rw-r--r-- 1 root root 17 May 15 00:13 index.html
-rw-r--r-- 1 root root 47 May 14 22:37 readme


另外一种commit 自动关闭分支任务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
-rw-r--r-- 1 root root 47 May 14 22:37 readme
[root@linux-node1 app1]
[root@linux-node1 app1] # git checkout -b news
Switched to a new branch  'news'
[root@linux-node1 app1] # git status
On branch news
nothing to commit, working directory clean
[root@linux-node1 app1] # echo "xinwen" >news.html
[root@linux-node1 app1] # ll
total 12
-rw-r--r-- 1 root root 17 May 15 00:13 index.html
-rw-r--r-- 1 root root  7 May 15 00:16 news.html
-rw-r--r-- 1 root root 47 May 14 22:37 readme
[root@linux-node1 app1] # git add .
[root@linux-node1 app1] # git status
On branch news
Changes to be committed:
   (use  "git reset HEAD <file>..."  to unstage)
 
     new  file :   news.html
 
[root@linux-node1 app1] # git commit -m "close #2"#使用#2格式来提交
[news 9def595] close  #2
  file  changed, 1 insertion(+)
  create mode 100644 news.html
[root@linux-node1 app1] # git status
On branch news
nothing to commit, working directory clean
[root@linux-node1 app1] # git push origin news
Counting objects: 3,  done .
Delta compression using up to 2 threads.
Compressing objects: 100% (2 /2 ),  done .
Writing objects: 100% (3 /3 ), 303 bytes | 0 bytes /s done .
Total 3 (delta 0), reused 0 (delta 0)
To git@192.168.56.11:Group1 /app1 .git
  * [new branch]      news -> news




本文转自 kesungang 51CTO博客,原文链接:http://blog.51cto.com/sgk2011/1925922,如需转载请自行联系原作者
相关文章
|
开发工具 git
Source Tree多个远程仓库管理及如何在gitlab提Merge
目录 一、背景 二、Gitlab上Fork仓库 三、SoureTree上新增远程仓库 1、进入仓库设置 2、新增远程仓库 四、同步原仓库代码以及gitlab提merge 1、同步原仓库最新代码 2、gitlab上提merge
Source Tree多个远程仓库管理及如何在gitlab提Merge
|
Web App开发 Rust 算法
苹果 iPhone 14 或将取消刘海;算法推荐管理规定已施行;GitLab 14.8 发布 | 思否周刊
苹果 iPhone 14 或将取消刘海;算法推荐管理规定已施行;GitLab 14.8 发布 | 思否周刊
130 0
|
数据安全/隐私保护
|
Kubernetes 测试技术 开发者
在GitLab CI/CD中使用environment对部署环境进行管理
在GitLab CI/CD中使用environment对部署环境进行管理 关键词environment的详细解释
543 0
在GitLab CI/CD中使用environment对部署环境进行管理
|
Linux 网络安全 数据安全/隐私保护
Gitlab权限管理-issue管理[六]
标签(linux): git 笔者Q:972581034 交流群:605799367。有任何疑问可与笔者或加群交流 设置好密码后登录进入管理目录 创建组 设置组名和权限 创建用户 已有四个用户了 给pm增加一个master的权限,加放password组 创建一个库 创建一个项目 创...
1309 0
|
Ubuntu 应用服务中间件 开发工具
git学习------&gt;在CenterOS系统上安装GitLab并自定义域名访问GitLab管理页面
目前就职的公司一直使用SVN作为版本管理,现在打算尝试从SVN迁移到Git。安排我来预言并搭建好相关的环境以及自己尝试使用Git。今天我就尝试在Center OS系统上安装GitLab,现在在此记录一下整个安装过程。
3674 0