Gitlab版本控制

1.Gitlab基本概述

1.1 什么是gitlab

Gitlab是一个开源分布式的版本控制系统。 Ruby语言开发完成。 Gitlab主要实现的功能
  1.管理项目源代码。
  2.对源代码进行版本控制。
  3.对代码进行超找与复用。

1.2 Gitlab与Github区别

1.相同点: 两者都是提供代码托管服务,在很大程度上GitLab是仿照GitHub来做的。
2.不同点: github创建私有仓库收费、gitlab创建私有仓库免费。 PS: 从安全方面来看,公司不希望员工获取到全部的代码,这个时候 GitLab 是最佳的选择。 但对于开源项目而言,GitHub 依然是代码托管的首选平台。

1.3 Gitlab的优势和应用场景

1.开源免费,搭建简单、维护成本较低、适合中小型公司。
2.权限管理,能实现代码对部分人可见,确保项目的安全性。
3.离线同步,保证我们不在实时依赖网络环境进行代码提交。

1.4 Gitlab服务构成

gitlab作为一个分布式代码托管软件,它必然有相关的服务组件去支持这个庞大系统。
在这里插入图片描述

nginx,作为gitlab的proxy代理,处理http/https以及静态资源访问请求。
gitlab-workhorse,用于处理文件上传和下载。
gitlab-shell,用于处理git clone、git pull、git push。
Logrotate,用于处理日志的切割和打包等操作。
Postgresql,用于保存所有的gitlab数据相关信息。
Redis,用于缓存数据库的信息,加快前台访问速度,以及交互读写。

2.Gitlab安装配置

2.1 安装依赖软件

1.关闭防火墙与selinux

[root@gitlab ~]# setenforce 0
[root@gitlab ~]# systemctl stop firewalld && systemctl disable firewalld

2.安装 gitlab 所需依赖软件

[root@gitlab ~]# yum install -y curl openssh-server postfix wget

2.2 安装 Gitlab 组件

1.下载 Gitlab

[root@gitlab ~]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.0.3-ce.0.el7.x86_64.rpm

2.使用 yum 安装 Gitlab

[root@gitlab ~]# yum localinstall gitlab-ce-12.0.3-ce.0.el7.x86_64.rpm -y

2.3 配置Gitlab配置文件

**改gitlab配置文件 /etc/gitlab/gitlab.rb **

1. 配置 Gitlab 域名
[root@gitlab ~]# vim itlab.rb
#1.Gitlab Url
external_url 'http://gitlab.cry.com' 
2. 配置 Gitlab 邮箱
2.1在账号注册时,需要使用邮件验证。
2.2后期修改密码时,需要通过邮件修改。
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = "476764695@qq.com"  # 发件邮箱
gitlab_rails['gitlab_email_display_name'] = 'GitLab' # 发件人显示名称

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "476764695@qq.com" #发件人邮箱账户
gitlab_rails['smtp_password'] = "nvguuktrefkmbcbe"  #发件人邮箱客户端授权码
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
3. 关闭 Gitlab 组件
由于 Gitlab 核心功能是代码托管,所以有些额外的组件比较浪费资源,所以可以考虑关闭。
1385 prometheus['enable'] = false
1386 prometheus['monitor_kubernetes'] = false
1474 node_exporter['enable'] = false
1493 redis_exporter['enable'] = false
1511 postgres_exporter['enable'] = false
1540 gitlab_monitor['enable'] = false
1553 prometheus_monitoring['enable'] = false
1560 grafana['enable'] = false
1452 alertmanager['enable'] = false

2.4 初始化 Gitlab 组件

第一次需要初始化 gitlab 服务,后续如果对 gitlab 配置文件进行修改,也需要执行初始化进行重新配置。

[root@gitlab ~]# gitlab-ctl reconfigure
[root@gitlab ~]# gitlab-ctl status
[root@gitlab ~]# gitlab-ctl stop
[root@gitlab ~]# gitlab-ctl start

2.5 验证 Gitlab 组件

1.重新初始化后通过 gitlab-rails 检查 gitlab 邮箱是否可正常使用。

[root@gitlab ~]# gitlab-rails console
Notify.test_email('476764695@qq.com','gitlab','搭建gitlab').deliver_now

在这里插入图片描述
2.配置本地劫持,第一次登录需要gitlab,需要配置 Gitlab root 超级管理员的密码。
在这里插入图片描述
在这里插入图片描述

2.6 汉化 Gitlab 组件

1.使用 git 命令下载汉化补丁包

# wget https://gitlab.com/xhang/gitlab/-/archive/12-0-stable-zh/gitlab-12-0-stable-zh.tar.gz
# tar xf gitlab-12-0-stable-zh.tar.gz
# cat gitlab-12-0-stable-zh/VERSION  #查看汉化版本是否与gitlab版本一致
12.0.3

2.停止 gitlab,进行中文汉化。

# gitlab-ctl stop
# \cp -r gitlab-12-0-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/

3.重启 gitlab,验证汉化结果。

#重新配置gitlab服务
[root@gitlab ~]# gitlab-ctl reconfigure

#重启gitlab服务
[root@gitlab ~]# gitlab-ctl restart

4.然后登陆gitlab进行默认语言设置
在这里插入图片描述

3.Gitlab用户与组

3.1 用户与组及仓库的关系

Gitlab 中的用户、用户组、项目仓库之间的关系是什么样的?
在这里插入图片描述

注意:
如果使用user创建一个仓库,那么这个用户就是这个仓库的owner
如果使用group创建一个仓库,那这个组下面添加的所有用户就是这个仓库的owner

3.2 用户与组及仓库案例1

案例1:验证项目是不是隶属于该组的成员才可以看见

1.首先创建dev、ops两个组

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.然后基于组创建两个项目项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.最后创建用户、为用户分配组、以及组中的权限

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4. 登陆创建出来的普通用户查看可以对那些项目进行查看呢?
oldxu普通用户因为加入到ops组,所以只能查看隶属于ops组的项目 server_config
在这里插入图片描述
oldguo普通用户因为加入到dev组,所以能查看隶属于dev组的项目 alipay和wxpay
在这里插入图片描述

3.3 用户与组及仓库案例2

案例2:验证主程序员和开发者身份的权限
1.主程序员:能够对 master、dev 分支进行操作;
2.开发人员:仅能对非 master 分支进行操作;
在这里插入图片描述
首先测试oldxu主程序员对主分支master和非主分支的dev分支push权限
Linux系统模拟实验

1.oldxu登陆gitlab进行本地仓库的初始化操作

在这里插入图片描述

2.根据gitlab的提示我们进行命令行操作

1.创建项目目录,进行身份验证

mkdir /server_config
cd /server_config
#身份验证
git config --global user.name "oldxu"
git config --global user.email "oldxu@qq.com"

2.配置本地linux系统解析

echo "10.0.0.110 gitlab.cry.com " >>/etc/hosts

在这里插入图片描述
3.http协议克隆gitlab仓库到本地

git clone http://gitlab.cry.com/ops/service_config.git

在这里插入图片描述
4.进入克隆的仓库目录下进行初始化操作

cd service_config
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

在这里插入图片描述
说明了主程序源oldxu可以提交到master分支
5.接下来我们创建新的分支 dev,测试oldxu主程序员能否提交dev分支

[root@gitlab service_config]# git branch dev
[root@gitlab service_config]# git branch
  dev
* master
[root@gitlab service_config]# git checkout dev
切换到分支 'dev'
[root@gitlab service_config]# echo "dev分支" >>README.md 
[root@gitlab service_config]# cat README.md 
## 运维项目的服务配置文件
dev分支

在这里插入图片描述
6。首先提交到本地git仓库,然后测试查看oldxu主程序员是否能够提交dev分支到远端仓库
在这里插入图片描述

git push origin dev

在这里插入图片描述
在这里插入图片描述
测试oldchai开发人员对主分支master和非主分支的dev分支push权限
windows系统模拟实验
在这里插入图片描述
1.通过http协议克隆远程仓库到本地
在这里插入图片描述
在这里插入图片描述
2.因为我在桌面目录下,所以克隆远端项目仓库后,代码会在我的桌面显示
在这里插入图片描述
3.编辑项目仓库中的README.md文件
在这里插入图片描述
4.上传到本地仓库

git add .
git commit -m " 测试push master主分支"

5.oldchai推送master主分支到远程仓库,发现无法提交
在这里插入图片描述
6.oldchai推送dev非主分支到远程仓库,发现成功
在这里插入图片描述
在这里插入图片描述

结论

1.主程序员:
		能够对 master、dev 分支进行操作;
			master: 主干分支,受保护, 非主程序员,无法提交至Master分支
		
2.测试开发者:
	仅能对非 master 分支进行操作;
		master:   无法提交,因为master被保护,没有权限  
		dev:      主要不是主干分支,开发者可以随便提交;

3.开发人员如何推送到master呢?

1.关闭对mater主分支的保护
在这里插入图片描述
在这里插入图片描述
2.oldchai通过网页提交请求dev合并到master分支,等待领导审核
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
3.oldxu领导审核请求
登陆oldxu账号有通知代办的项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.4 如何把http协议访问更改为ssh协议

在这里插入图片描述

1.ssh-keygen生产公钥对
2.将公钥复制粘贴
3.在gitlab网站上进行添加公钥

在这里插入图片描述
4.命令行操作

查看远端仓库
[root@gitlab service_config]# git remote -v
origin	http://gitlab.cry.com/ops/service_config.git (fetch)
origin	http://gitlab.cry.com/ops/service_config.git (push)
移除远端仓库
git remote remove origin
指定新的远端仓库连接
git remote add origin git@gitlab.cry.com:ops/service_config.git
克隆远端仓库到本地
git clone git@gitlab.cry.com:ops/service_config.git
推送本地master到远端master
git push origin master

3.5 如果有新成员需要加入该项目该怎么办?

1.先给新成员创建用户
2.将成员加入组,此时该用户就能看到对应的项目
3.使用http方式,输入用户名与密码,测试能否获取项目代码
3.使用ssh方式,添加对应公钥信息,测试能否获取项目代码

4.Gitlab日常运维

4.1 Gitlab备份(全备)

1.修改默认存放备份站点目录,然后进行重新加载配置文件

[root@gitlab-ce ~]# vim /etc/gitlab/gitlab.rb
...
gitlab_rails['manage_backup_path'] = true             #开启备份
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"  #备份路径变更,默认路径系统自带就有
gitlab_rails['backup_keep_time'] = 604800           #备份保留7天
...

[root@gitlab-ce ~]# gitlab-ctl reconfigure

在这里插入图片描述
2.手动执行备份命令

gitlab-rake gitlab:backup:create

3.当然也可以将备份命令写入定时任务每天进行自动备份

[root@gitlab-ce ~]# crontab -l
00 02 * * * /usr/bin/gitlab-rake gitlab:backup:create

4.2 Gitlab 恢复

1.停止数据写入服务

[root@gitlab-ce ~]# gitlab-ctl stop unicorn
[root@gitlab-ce ~]# gitlab-ctl stop sidekiq

2.通过 gitlab-rake 命令进行恢复,恢复时需要指定此前备份的名称。(但不需要写名称的.tar后缀)

[root@gitlab-ce ~]# gitlab-rake gitlab:backup:restore BACKUP=备份文件

3.重启gitlab,检测是否 gitlab 是否恢复。

gitlab-ctl restart

4.3 模拟误删除,进行恢复(前提做好备份)

1.模拟误删除,有三个项目,我们将service_config这个项目删除
在这里插入图片描述
在这里插入图片描述
2.我们再查看只剩下两个项目
在这里插入图片描述
3.停止数据写入服务

[root@gitlab-ce ~]# gitlab-ctl stop unicorn
[root@gitlab-ce ~]# gitlab-ctl stop sidekiq

在这里插入图片描述
4.通过 gitlab-rake 命令进行恢复,恢复时需要指定此前备份的名称。(但不需要写名称的.tar后缀)

[root@gitlab-ce ~]# gitlab-rake gitlab:backup:restore BACKUP=1610789813_2021_01_16_12.0.3

在这里插入图片描述
5.重启gitlab,检测gitlab已经恢复好了

gitlab-ctl restart

在这里插入图片描述

4.4 Gitlab升级与迁移

在这里插入图片描述

gitlab不能跨大版本升级,我们想从12升级到13就要,先升到12的最新版本再升级到13

1.怎么知道大版本最新的小版本,我们可以看清华源网站

我们现在的版本是12.0.03,所以我们先升级到最新小版本12.10.14在这里插入图片描述

10.0.0.110节点

2.在升级之前我们要备份数据,防止备份失败之后我们可以进行回退操作

我们上面已经备份过了
在这里插入图片描述

3.下载12新版软件包,并进行安装

在这里插入图片描述
在这里插入图片描述

同版本之间自动迭代升级
yum -y localinstall gitlab-ce-12.10.14-ce.0.el7.x86_64.rpm

4.重新加载设备

gitlab-ctl reconfigure

5.登陆gitlab,检测当前版本

在这里插入图片描述

6.继续升级到13版本

yum -y localinstall gitlab-ce-13.0.10-ce.0.el7.x86_64.rpm

在升级过程中遇到了一个报错。
在这里插入图片描述

gitlab_monitor['enable'] has been deprecated since 12.3 and was removed in 13.0. Use gitlab_exporter['enable'] instead
vim /etc/gitlab/gitlab.rb
# gitlab_monitor['enable'] = false #注释
gitlab_exporter['enable'] =false   #新增

在这里插入图片描述

7.重新加载配置才能使更改完的配置文件生效,重新升级安装13

重新加载配置
gitlab-ctl reconfigure
重新安装
yum -y localinstall gitlab-ce-13.0.10-ce.0.el7.x86_64.rpm

8.登陆gitlab,检测当前版本

在这里插入图片描述

9.成功升级到13版本,进行迁移数据前的准备,进行备份。

gitlab-rake gitlab:backup:create

在这里插入图片描述

10.0.0.120节点

10.安装与110节点同13版本的gitlab

yum -y localinstall gitlab-ce-13.0.10-ce.0.el7.x86_64.rpm
初始化配置
gitlab-ctl reconfigure

11.将备份数据导入到120节点

scp  root@10.0.0.110:/var/opt/gitlab/backups/1610795562_2021_01_16_13.0.10_gitlab_backup.tar  /var/opt/gitlab/backups/
更改权限为git
chown -R git. /var/opt/gitlab/backups/

12.进行恢复数据操作

1.停止数据写入服务
[root@gitlab-ce ~]# gitlab-ctl stop unicorn
[root@gitlab-ce ~]# gitlab-ctl stop sidekiq
2.通过 gitlab-rake 命令进行恢复
gitlab-rake gitlab:backup:restore BACKUP=1610795562_2021_01_16_13.0.10	
3.重启
gitlab-ctl restart

13 配置域名,进行访问

在这里插入图片描述

4.5 Gitlab忘记密码

如何重置 GitLab的 root 密码
1.在 root 用户下,执行

[root@gitlab-ce ~]# gitlab-rails console -e production

2.获得用户数据,修改用户密码

irb(main):001:0> user = User.where(id: 1).first

#更改密码并确认密码
irb(main):002:0> user.password="oldxu.com"
irb(main):003:0> user.password_confirmation="oldxu.com"

#保存退出
irb(main):004:0> user.save!
irb(main):005:0> quit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值