GitLab企业级代码管理仓库
GitLab服务器
前面我们已经知道Git人人都是中心,那他们怎么交互数据呢?
使用GitHub或者码云等公共代码仓库
使用GitLab私有仓库
GitLab是什么?
是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。基础功能免费,高级功能收费。
为什么要使用GitLab?
基础功能开源,可自行搭建
可以进行权限控制,使得代码对部分人可见
gitlab使用方便
GitLab搭建过程
主机名 | IP | 备注 | 特殊要求 |
---|---|---|---|
GitA | 192.168.200.70 | Git客户端 | 无 |
GitB | 192.168.200.90 | GitLab服务器端 | 内存2G |
官方安装文档:https://about.gitlab.com/installation/#centos-7
GitLab国内源下载地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
初始环境
cat /etc/redhat-release
uname -r
echo "gitb 127.0.0.1" >> /etc/hosts
tail -1 /etc/hosts
ls
GitLab软件包下载
链接:https://pan.baidu.com/s/1TYJnh6M01MAVhLRXr-qfLw
提取码:mqxp
在GitB上安装GitLab
ls
yum localinstall gitlab-ce-11.2.3-ce.0.el7.x86_64.rpm -y
yum localinstall -y代表利用yum安装本地指定的rpm包,好处是自动解决依赖问题
初始化GitLab,只需要执行一次
gitlab-ctl reconfigure
查看gitlab启动状态
gitlab-ctl status
查看gitlab版本号
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
在宿主机输入网址进行就可以访问了
linyaonie
接下来设置管理员初始密码,最少8位
登陆管理员账号:root,密码:linyaonie
登陆后,我们就可以选择如下功能使用了
GitLab中文社区版补丁包安装
GitLab中文社区:https://gitlab.com/xhang/gitlab/tree/11-2-stable-zh
解压GitLab中文版补丁包
ls
tar xf gitlab-11-2-stable-zh.tar.gz
查看系统已经安装的GitLab版本号
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
查看解压后的补丁版本号
cat gitlab-11-2-stable-zh/VERSION
特别提示:补丁包版本号和安装的GitLab版本号需要一致
备份英文版GitLab
cp -r /opt/gitlab/embedded/service/gitlab-rails{,.bak}
将中文补丁包的内容覆盖英文版
/bin/cp -rf gitlab-11-2-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/
特别提示:报错不需要管,因为已经设置过root密码,登陆过,所以会报错
重新配置GitLab
gitlab-ctl reconfigure
重新启动GitLab
gitlab-ctl restart
重新刷新浏览器访问GitLab(中途掉线了,IP地址变了)
使用GitLab
创建一个新项目
修改GitLab配置文件/etc/gitlab/gitlab.rb
我们需要修改GitLab的默认域名(因为我们是在内网搭建的GitLab)
GitLab默认的监听端口为80,但是在企业中,这个端口经常被别的服务占用,所以我们还需要更换端口号cp /etc/gitlab/gitlab.rb{,.bak}
cat -n /etc/gitlab/gitlab.rb.bak | sed -n '13p;943p'
vim /etc/gitlab/gitlab.rb
13 external_url 'http://192.168.200.90:8888'
943 nginx['listen_port'] = 8888
cat -n /etc/gitlab/gitlab.rb | sed -n '13p;943p'
重新配置GitLab
gitlab-ctl reconfigure
重新启动GitLab
gitlab-ctl restart
重新访问浏览器
尝试将本地仓库代码推送到私有GitLab
在GitA客户端上
cd /mycode
ls
git branch
添加远程GitLab仓库管理
git remote add origin http://192.168.200.90:8888/root/yunjisuan.git
git remote -v
推送本地仓库master分支到远程仓库GitLab上
git push origin master
输入账号root和密码linyaonie
推送本地仓库linux分支到远程仓库GitLab上
git branch
git checkout linux
git push origin linux
输入账号root和密码linyaonie
在推送本地仓库标签v1.0到远程仓库GitLab上
git tag
git push origin v1.0
输入账号root和密码linyaonie
重新刷新网页并查看
尝试在本地仓库克隆GitLab的项目Linux分支到本地仓库
在GitA上创建Git工作目录
mkdir /test
cd /test
克隆远程仓库GitLab的Linux分支
git clone -b linux http://192.168.200.90:8888/root/yunjisuan.git
重要提醒:-b是指定分支,不写默认克隆master主分支输入账号root和密码linyaonie
ls
cd yunjisuan
git branch
配置GitLab的SSH密钥连接方式
在GitA客户端生成密钥对
ssh-keygen -t rsa -C '1123400300@qq.com'
全部回车cd /root/.ssh
ls
cat id_rsa.pub --->公钥内容,复制到GitLab上
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3TJUkCCeQErxymS7o3QGAtlH00qyISMLUSLeIqEwtRrLi2MX5+mfg53sxcmuH78zazWO59c2q0+ocSK/VFuXbV2SToNVStCPwKA+UCafYkG3KxIznPlztb4rnKxuOYMDAVlM3JSlaLDCT2QUEZvp4YMsYZ3BIOMV09UQRYjVsX4Psq8hRNaTsWyM2ufIXaaS61lX3zWzx/98FuFPkJhnH0sgCdV5uE5KBiek02Gt97h8wgRZoIxFYbstklw86pVZnosaLoTACGIDU7Kvzn+UYZQy66AJuGbKj+47S2sxwvK4v5wzLEIWryHLpAeOyoQ8Giv166Ezl/ouJybZ6RCLN 1123400300@qq.com
在浏览器打开GitLab
在GitA客户端重新进行克隆测试
mkdir /miyao
cd /miyao
git clone -b linux git@192.168.200.90:root/yunjisuan.git --->第一次需要记录主机所以需要输入yes
在GitB上配置GitLab邮件服务
配置邮箱服务的用途
-
有合并请求时间,邮件通知
-
账号注册时,邮件验证
-
修改密码时,通过邮件修改
配置步骤
-
开启QQ邮箱的smtp服务
-
修改gitlab配置
-
测试邮件服务是否正常
开启GitLab服务postfix服务并开启QQ邮箱的smtp服务
systemctl start postfix
systemctl enable postfix
systemctl status postfix
jbcgbxbsatwzhegi
修改GitLab配置文件/etc/gitlab/gitlab.rb
cat -n /etc/gitlab/gitlab.rb.bak | sed -n '53p;472,480p;618p'
vim /etc/gitlab/gitlab.rb
cat -n /etc/gitlab/gitlab.rb | sed -n '53p;472,480p;618p'
53 gitlab_rails['gitlab_email_from'] = '1123400300@qq.com' --->GitLab默认邮箱
472 gitlab_rails['smtp_enable'] = true --->开启功能
473 gitlab_rails['smtp_address'] = "smtp.qq.com" --->QQ的smtp服务
474 gitlab_rails['smtp_port'] = 465
475 gitlab_rails['smtp_user_name'] = "1123400300@qq.com" --->smtp用户邮箱
476 gitlab_rails['smtp_password'] = "jbcgbxbsatwzhegi" --->开通QQsmtp时返回的字符串
477 gitlab_rails['smtp_domain'] = "qq.com" --->smtp域名
478 gitlab_rails['smtp_authentication'] = "login"
479 gitlab_rails['smtp_enable_starttls_auto'] = true
480 gitlab_rails['smtp_tls'] = true
618 user['git_user_email'] = "1123400300@qq.com" --->git用户邮箱
重新加载GitLab配置文件
gitlab-ctl reconfigure
重新启动GitLab服务
gitlab-ctl restart
进入GitLab控制台进行邮件发送测试
gitlab-rails console --->开启GitLab控制台
Notify.test_email('1123400300@qq.com','ceshi','hello').deliver_now
特别说明:Notify.test_email('收件人邮箱','邮件标题','邮件内容')
进入QQ邮箱并查看
GitLab的账号注册及分组
账户注册测试
我们在注册的时候,用的是乱写的邮箱都能注册并登陆
显然这在企业里是绝对不允许的
开启GitLab邮箱验证功能
重新登陆管理员用户:root,密码:linyaonie,我们在进行如下操作
退出时,别忘了保存修改
然后我们退出管理员进行重新注册
创建一个项目组
给组添加成员并授权
Guest访客 --->只能发表评论,不能读写项目库
Reporter报告者 --->只能克隆代码(读),不能提交代码(修改)(产品测试)
Deveioper开发人员 --->可以进行代码的读写,不能分支合并但可以提交请求(普通程序员)
Master主程序员 --->可以添加项目成员,添加标签,创建和保护分支(产品经理)
Owner所有者 --->拥有所有权限(一般不用此权限)
添加权限成功后,GitLab会自动邮件通知这个用户
给项目组创建一个新项目
在GitA主机上创建环境并测试
mkdir /benet
cd /benet
touch {1..5}
git init
git remote add test http://192.168.200.90:8888/dev/benet.git
git remote -v
git add *
git commit -m "主程序员测试一下"
git push -u test master
输入账号:1123400300@qq.com,密码:linyaonie