GitLab的使⽤
Gitlab使⽤
⼀、常⽤命令
gitlab-ctl status:查看gitlab组件状态
gitlab-ctl start:启动全部服务
gitlab-ctl restart:重启全部服务
gitlab-ctl stop:停⽌全部服务
gitlab-ctl reconfigure:使配置⽂件⽣效(⼀般修改完主配置⽂件/etc/gitlab/gitlab.rb,需要执⾏此命令)
gitlab-ctl show-config :验证配置⽂件
gitlab-ctl uninstall:删除gitlab(保留数据)
gitlab-ctl cleanse:删除所有数据,从新开始
gitlab-ctl tail <service name>查看服务的⽇志
⼆、常⽤的组件
nginx:静态Web服务器
gitlab-shell:⽤于处理Git命令和修改authorized keys列表,我们的gitlab是以Git做为最层的,你操作实际上最后就是调⽤gitlab-shell命令进⾏处理。
gitlab-workhorse:轻量级的反向代理服务器
logrotate:⽇志⽂件管理⼯具
postgresql:数据库
redis:缓存数据库
sidekiq:⽤于在后台执⾏队列任务(异步执⾏)
unicorn:GitLab Rails应⽤是托管在这个服务器上⾯的
三、基础⽬录:
/var/opt/gitlab/git-data/repositories:库默认存储⽬录
/opt/gitlab:应⽤代码和相应的依赖程序
/var/opt/gitlab:gitlab-ctl reconfigure命令编译后的应⽤数据和配置⽂件,不需要⼈为修改配置
/etc/gitlab:配置⽂件⽬录
/var/log/gitlab:此⽬录下存放了gitlab各个组件产⽣的⽇志
/var/opt/gitlab/backups/:备份⽂件⽣成的⽬录
四、Gitlab基本配置
1、关闭注册
由于我们Gitlab系统是私有仓库,⼀般⽤户都是由管理员创建和分派的,所以我们需要关闭注册。
2、create group
group(项⽬)下⾯可以创建subgroup,创建project(项⽬下的具体⼯程),添加user。group就是把相
关的project或者user放在⼀起,进⾏统⼀的权限管理。我们创建⼀公司⽹站的项⽬web-site,项⽬下⾯有两个⼯程,⼀个是前台pro-frontend,⼀个是后台管理pro-backend。
visibility Level:选择谁可以访问该组:我们默认选择private,因为我建设的是私有仓库
Private:只有授权的⽤户才可以看到
Internal:只要是登录gitlab的⽤户就可以看到
Public:只要可以访问gitlab web页⾯的⼈就可以看到
点击group名称进去,我们在web-site下⾯创建project:
此时我们已经创建了⼀个frontend的project,是⼀个空的⼯程。我们暂时先不管其他的,使⽤同样的⽅法创建backend project。
subgroup创建同group同样,在此我们不再详细说明。
3、create user
我们主要创建这两类⽤户,⼀类是项⽬经理PM(⽤来管理项⽬),另⼀类是开发DEV(项⽬功能的实
现)。
注:1、邮件不能重复;
2、新建⽤户不能设置密码,需要我们在添加完⽤户名,编辑⽤户并为⽤户设置⼀个初始密码,⽤户第⼀次登录时系统要求⽤户更改密码;
3、去掉勾选,普通⽤户我们⼀般不需要create group。
重复以上步骤,我们创建dev,dev1,dev2⽤户。
4、grant user
创建完user后,我们需要将user添加到组或者project上,并选择不同的role。
⾸先我们add user to group
我们将选择dev1⽤户,⾓⾊选择Developer,过期⽇期不设置为永远不过期。
⽤同样的⽅法添加dev2,pm(⾓⾊Master),添加到group.
将⽤户添加到组后,我们发现组⾥的每个project下⾃动添加了我们刚才添加的⽤户。
我们将dev⽤户添加到backend中,
我们切换到frontend project看⼀下:发现没有dev⽤户。
现在我们可以使⽤⽤户模拟的功能看⼀下每个⽤户的权限。
具体每⼀种⾓⾊的权限,可以参考如下地址:
5、添加SSH Key
我们使⽤dev1帐号登录到Gitlab,然后切换到⼀个具体的project下:
我们为dev1⽤户添加⼀个SSH Key,SSH Key可以让我以SSH的⽅式链接到代码仓库,然后就可以在本地和Gitlab仓库之间拉取和推送代码。SSH Key全局唯⼀。
我们在node1节点上⽣成SSH Key:
[root@node1 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:eEoexwPCixJX99Gr7H3Sn29BS4RIJ4IBIbnr2fGme1M root@node1
The key's randomart image is:
+---[RSA 2048]----+
| .oo+.+ |
| +.. o .o.o. . |
|. . + . . . . |
| o o o + . o |
|. . o +.S. o .|
| . . + =oE o |
| . o =... . .|
| o . =. o o ..|
| o= . o .oo.|
+----[SHA256]-----+
[root@node1 ~]# ll .ssh/
total 12
-rw------- 1 root root 1679 Dec 4 15:17 id_rsa
-rw-r--r-- 1 root root 392 Dec 4 15:17 id_rsa.pub
-
rw-r--r-- 1 root root 803 Dec 1 13:26 known_hosts
[root@node1 ~]# cat .ssh/id_rsa.pub
ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQDnWbgoAKbW5nCTnRo4IfAJ0KrEdbhiyEea2NTROP5QVsIZo8B7iIcoq78XfIZWscGkDypWRa1HTAGrdem0d28ihqrcFsepnKhRpiXC4ZbycZ7DIU1LXtCBioNrCJdm7fGOse root@node1
我们将公钥id_rsa.pub的内容添加到Gitlab dev1⽤户的SSH Key中。
⾄此,我们已经完成打通了dev1的本机与Gitlab仓库之间的通道。
我们再将我们的windows的SSH Key添加到Gitlab,⾸先我们要安装Git GUI(参考gitlab安装⽂档):
在窗⼝中重复执⾏我们在linux中创建SSH Key的过程
然后根据提⽰到id_rsa.pub,将该⽂件中的内容添加到Gitlab中dev2的SSH Key。
由于SSH Key全局唯⼀,所以我只要任何⼀个⽤户中添加都可以。
6、初始化GitLab仓库
刚才我们创建的前台和后台两个project现在还是空的,本次教程我们只使⽤其中的frontend,现在我们⾸先对这两个仓库进⾏初始化,并创建两个分⽀master,dev。我们使⽤pm⽤户
对frontend进⾏初始化操作。
接下来我们⾃动创建dev分⽀:
我们可以mster分⽀是默认的分⽀,⽽且是受保护的。
在实际的开发过程中,master分⽀⼀般⽤来版本发布,dev分⽀⽤于存放开发代码。
7、使⽤Gitlab远程仓库
前⾯我们已经创建了frontend的远程仓库,现在我们分别在linux下和windows下连接远程仓库,实现代码的摘取与推送。 linux:
使⽤git clone 命令克隆远程frontend仓库到本地
[root@node1 ~]# git clone git@192.168.56.12:web-site/frontend.git
Cloning into 'frontend'...
The authenticity of host '192.168.56.12 (192.168.56.12)' can't be established.
ECDSA key fingerprint is SHA256:SjPoetHYvGBI08VxTdzYOys+QpjR5vLNbU9Obs2Lx9Q.
ECDSA key fingerprint is MD5:39:3e:52:a1:45:9b:3e:23:72:e6:0d:0e:76:00:17:55.
Are you sure you want to continue connecting (yes/no)? yes /*第⼀次连接时会出现该提⽰
Warning: Permanently added '192.168.56.12' (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.
done.
[root@node1 ~]# ll
total 4
-
rw-------. 1 root root 1374 Nov 27 00:14 anaconda-ks.cfg
drwxr-xr-x 3 root root 94 Nov 30 22:28 demo
drwxr-xr-x 3 root root 32 Dec 4 21:02 frontend
drwxr-xr-x 3 root root 97 Dec 2 19:48 git-test
drwxr-xr-x 4 root root 49 Nov 30 15:53 web-site
[root@node1 ~]# cd frontend/
[root@node1 frontend]# ll
total 4
-rw-r--r-- 1 root root 16 Dec 4 21:02 README
[root@node1 frontend]# git branch
* master
git使用详解[root@node1 frontend]# git remote -v
origin git@192.168.56.12:web-site/frontend.git (fetch)
origin git@192.168.56.12:web-site/frontend.git (push)
从远程仓库拉下dev分⽀到本地
[root@node1 frontend]# git pull origin dev
From 192.168.56.12:web-site/frontend
* branch dev -> FETCH_HEAD
Already up-to-date.
切换到dev分⽀
[root@node1 frontend]# git checkout dev
Branch dev set up to track remote branch dev from origin.
Switched to a new branch 'dev'
[root@node1 frontend]# git branch
* dev
master
在dev分⽀下添加⽂件,然后commit。
[root@node1 frontend]# echo "this is linux agnet" >>
You have new mail in /var/spool/mail/root
[root@node1 frontend]# git add .
[root@node1 frontend]# git commit -m " file"
[dev cdd58d8] file
1 file changed, 1 insertion(+)
create mode
推送本地dev分⽀到远程仓库的dev分⽀
[root@node1 frontend]# git push origin dev
Counting objects: 3, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 291 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote:
remote: To create a merge request for dev, visit:
remote:
To 192.168.56.12:web-site/frontend.git
然后我们在Gitlab上查看:
windows:
第⼀次连接会出现此对话框,请输⼊yes。
拉取远程dev分⽀,然后切换
我们在frontend⽂件夹⾥添加windows⽂件
上⾯的两个过程我们都是从本地的dev推送到Gitlab仓库的dev分⽀,那我是不是可以直接在本地合并到master分⽀,然后推送master分⽀到Gitlab呢?这个问题留给⼤家课后实际操作⼀下。实验结果:
[root@node1 frontend]# git checkout master
Switched to branch 'master'
[root@node1 frontend]# git merge dev
dd58d8
Fast-forward
< | 1 +
1 file changed, 1 insertion(+)
create mode
[root@node1 frontend]# ll
total 8
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论