GitLab
Gitlab 是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的 Git 项目仓库,可通过Web 界面进行访问公开的或者私人的项目
官方网站:https://about.gitlab.com
环境
主机名 | IP |
---|---|
gitlab | 192.168.1.20 |
client01 | 192.168.1.19 |
client02 | 192.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
2.取消登录页面注册功能
登录gitlab >> admin area(顶部菜单栏小扳手图 >> 左侧面板settings >> Sign-up Restrictions >> 去除勾选sign-up enabled >> 下拉选save保存
3.修改登录欢迎页面
登录gitlab >> admin area >> Appearance >> 填写管理员联系方式和logo >> save(保存)
设置完的效果图:
案例
项目创建
1.项目创建流程
(1)创建group(组)
登录gitlab >> admin area >> new group
(2)创建user(用户)
登录gitlab >> admin area >> new user >> 添加用户名、邮箱 >> create >> edit >> 修改密码
(3)创建项目
登录gitlab >> admin area >> new project >> 注意选择组
Gitlab中的组对项目有三种访问权限:
权限 | 解释 |
---|---|
Private | 只有组成员才能看到 |
Interna | 只要登录的用户就能看到 |
Public | 所有人都能看到 |
(4)将成员添加进组
将wangwu添加到accp中,
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登录 ,粘贴公钥
关联远程仓库
[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请求
切换回管理员账户,同意merge请求