一、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
初始界面如下:
开始会让你设置登录密码。
登录用户默认是root,密码是刚才设置的。
登录后的页面如下:
(2)取消注册功能
(3)修改登录欢迎界面
title处添加主题、description处添加描述、logo也可以自行设置,再次登录会看到设置的界面成功了。
4.Gitlab的项目创建流程
(1)创建group
Group path处填写一个名称、Group name处填写名称、description处进行组描述,然后点击最后的创建按钮即可。
(2)创建用户
添加名字、用户名、邮箱,然后创建即可。
点击edit–修改密码
(3)创建项目
选择创建的组
5.Gitlab中的组和项目有三种访问权限
Private:只有组成员才能看到
Internal:只要登录的用户就能看到
Public:所有人都能看到
6.上传ssh-key
本地用户创建秘钥:
[root@client1 ~]# ssh-keygen -t rsa
复制公钥内容:
[root@client1 ~]# cat /root/.ssh/id_rsa.pub
黏贴到web界面:
7.克隆下载项目,会在当前目录自动创建一个版本库目录
[root@client1 ~]# yum -y install git
[root@client1 ~]# git clone git@192.168.229.187:test/test.git
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
我们可以看到代码成功传到服务器了。
9.在客户机,普通开发人员更新代码流程
需是项目中的成员,下面是如何向项目中添加成员。
(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分支查看上传成功。
(6)普通开发人员在web界面创建merge请求
(7)切换到管理员登录,进入项目,同意merge请求。
左侧面板–merge requests–merge,点进去之后,可以勾选上remove source branch,点击merge即可。
10.Gitlab用户在组中有五种权限
Guest:可以创建issue、发表评论,不能读写版本库
Reporter:可以克隆代码,不能提交,测试、产品经理可以赋予这个权限
Developer:可以克隆代码、开发、提交、push,开发人员可以赋予这个权限
Master:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD
负责人可以赋予这个权限
Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理
组成员,开发组leader可以赋予这个权限