一、实验环境

gitlib只需要单机即可以了,因为好恢复。
机器IP:192.168.199.202
机器配置:4C8G(最低配置)

二、安装部署(不带邮箱)

官方文档:链接: link

关闭防火墙(根据自己需求)

systemctl stop firewalld
setenforce 0
iptables -F

安装依赖

yum install -y curl policycoreutils-python openssh-server perl

配置极狐GitLab 软件源镜像

curl -fsSL https://packages.gitlab.cn/repository/raw/scripts/setup.sh | /bin/bash

替换下面的IP为自己的IP,注意是http。(这里先不弄https)
包比较大,会慢一些

EXTERNAL_URL="http://192.168.199.202" yum install -y gitlab-jh

安装自动已经配置了开机自启,顺便查看一下组件状态

[root@node2 ~]# gitlab-ctl status
run: alertmanager: (pid 19545) 57s; run: log: (pid 19131) 92s
run: gitaly: (pid 19351) 67s; run: log: (pid 17824) 197s
run: gitlab-exporter: (pid 19509) 59s; run: log: (pid 18819) 110s
run: gitlab-kas: (pid 19477) 61s; run: log: (pid 18168) 182s
run: gitlab-workhorse: (pid 19487) 60s; run: log: (pid 18649) 127s
run: logrotate: (pid 17653) 212s; run: log: (pid 17673) 211s
run: nginx: (pid 18687) 123s; run: log: (pid 18703) 122s
run: node-exporter: (pid 19501) 60s; run: log: (pid 18770) 116s
run: postgres-exporter: (pid 19555) 57s; run: log: (pid 19191) 86s
run: postgresql: (pid 17982) 189s; run: log: (pid 18058) 186s
run: prometheus: (pid 19524) 59s; run: log: (pid 19092) 96s
run: puma: (pid 18477) 142s; run: log: (pid 18502) 139s
run: redis: (pid 17719) 206s; run: log: (pid 17754) 203s
run: redis-exporter: (pid 19511) 59s; run: log: (pid 18873) 104s
run: sidekiq: (pid 18531) 136s; run: log: (pid 18567) 133s

也可以直接安装rpm包,依赖不能少

rpm -ivh gitlab-jh-15.5.2-jh.0.el7.x86_64.rpm
vim /etc/gitlab/gitlab.rb
#只有一行配置需要修改,不修改也可以
external_url 'http://gitlab.example.com' 修改为external_url 'http://YOUR_IP' 
# 启动
gitlab-ctl reconfigure
gitlab-ctl status

三、一些操作

3.1 常用命令

# 启动所有 gitlab 组件
sudo gitlab-ctl start 
# 停止所有 gitlab 组件
sudo gitlab-ctl stop 
# 启所有 gitlab 组件
sudo gitlab-ctl restart 
# 查看服务状态
sudo gitlab-ctl status 
# 重新配置并启动服务
sudo gitlab-ctl reconfigure 
# 修改默认的配置文件
sudo vim /etc/gitlab/gitlab.rb 
# 检查gitlab
gitlab-rake gitlab:check SANITIZE=true --trace 
# 查看日志
sudo gitlab-ctl tail 

3.2 备份

3.2.1 备份文件分为两步:

1、配置文件直接手动备份

/etc/gitlab/gitlab.rb:主配置文件,包含外部URL、仓库目录、备份目录等
/etc/gitlab/gitlab-secrets.json:(执行gitlab-ctl reconfigure命令行后生成),包含各类密钥的加密信息
cp /etc/gitlab/gitlab.rb  /etc/gitlab/gitlab.rb_`date +%F`
cp /etc/gitlab/gitlab-secrets.json /etc/gitlab/gitlab-secrets.json_`date +%F`

2、数据文件,使用以下方式备份
手动执行备份

sudo gitlab-backup create
or
sudo /opt/gitlab/bin/gitlab-rake gitlab:backup:create

会有提示说需要手动备份配置文件,就是上一个步骤
在这里插入图片描述
如果定时备份,例如每天凌晨2点30分备份

30 2 * * *  /opt/gitlab/bin/gitlab-rake gitlab:backup:create

上面的备份结果如下:
在这里插入图片描述

3.2.2 自定义备份位置

备份默认位置 /var/opt/gitlab/backups
修改备份位置

vim /etc/gitlab/gitlab.rb
gitlab_rails['manage_backup_path'] = true
# 备份目录
gitlab_rails['backup_path'] = "/backup/gitlab"
# 备份包(tar格式压缩包)的权限
gitlab_rails['backup_archive_permissions'] = 0644  
# 备份的保留时间,单位是秒
gitlab_rails['backup_keep_time'] = 604800  

重载配置生效

mkdir -p /backup/gitlab
gitlab-ctl reconfigure

3.3 恢复

1、前提条件
准备好原配置文件 /etc/gitlab/gitlab.rb /etc/gitlab/gitlab-secrets.json以及数据文件

2、确保GitLab服务的启动可访问,并且版本和备份数据版本一致

命令行查看

cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

OR

访问 http://192.168.199.202/help

在这里插入图片描述

3、拷贝备份文件至指定的backups目录下(默认为/var/opt/gitlab/backups),并确保权限为777
PS:我这里一台机器演示,所以用了上面设置的备份目录

cd /backup/gitlab/
chmod 777 1670833283_2022_12_12_15.6.2-jh_gitlab_backup.tar

4、 使用gitlab-ctl命令停止unicorn(或者puma)以及sidekiq服务

gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

在这里插入图片描述

5、使用gitlab-backup restore进行数据恢复

gitlab-rake gitlab:backup:restore force=yes BACKUP=1670833283_2022_12_12_15.6.2-jh

会有pg报错,不过好像没什么影响
在这里插入图片描述
为了保险起见,可以参考一下别人的处理(这里放在重启之后)
6、 恢复gitlab-secrets.json文件与gitlab.rb 配置文件
7、重设、重启服务并检查

gitlab-ctl  reconfigure 
gitlab-ctl  restart 
gitlab-rake gitlab:check SANITIZE=true

8、修改上面第5步的错误
修改postgresql配置

vim /var/opt/gitlab/postgresql/data/postgresql.conf
#修改为
listen_addresses = '*'
vim /var/opt/gitlab/postgresql/data/pg_hba.conf
#最后添加两行
local   all         all                               trust
host    all         all                               127.0.0.1/32 trust

重启gitlab服务

gitlab-ctl restart

修改gitlab账号为超级用户

su - gitlab-psql
/opt/gitlab/embedded/bin/psql -h 127.0.0.1 gitlabhq_production
psql (9.2.8)
Type "help" for help.
 
gitlabhq_production=# ALTER USER gitlab WITH SUPERUSER;
ALTER ROLE
gitlabhq_production=# \q

3.4 一些问题

Q1: 忘记密码,修改root密码

#使用黑屏终端修改root密码
gitlab-rails console -e production
user = User.where(username:"root").first
user.password = "12345687"
user.save! # 返回true,则root用户密码修改为 12345687

Q2: 修改gitlab nginx port

只修改listen port,不运行 reconfig,只运行 restart
vim /var/opt/gitlab/nginx/conf/gitlab-http.conf
gitlab-ctl restart nginx

Q3: 卸载gitlab

gitlab-ctl stop
rpm -ql gitlab-ce
ps aux | grep gitlab | awk '{print $2}' | xargs -I {} kill -9 {}
rm -rf /opt/gitlab /etc/gitlab /var/log/gitlab /var/opt/gitlab

Q4: gitlab-ctl reconfigure 卡死

另开终端运行 nohup /opt/gitlab/embedded/bin/runsvdir-start &

Q5: git 克隆 源码ssh 方式成功,http方式失败

检查密钥,重设sshkey

3.5 包含的组件

1. repository:代码库,可以是硬盘或 NFS 文件系统
2. Nginx:Web 入口
3. 数据库:包含以下信息:
    - repository 中的数据(元数据,issue,合并请求 merge request 等)
    - 可以登录 Web 的用户(权限)
4. Redis:缓存,负责分发任务
5. sidekiq:后台任务,主要负责发送电子邮件。任务需要来自 Redis
6. Unicorn:Gitlab 自身的 Web 服务器,包含了 Gitlab 主进程,负责处理快速/一般任务,与 Redis 一起工作。工作内容包括:
    -  通过检查存储在 Redis 中的用户会话来检查权限
    -  为 Sidekiq 制作任务
    -  从仓库(warehouse)取东西或在那里移动东西
7. gitlab-shell:用于 SSH 交互,而不是 HTTP。gitlab-shell 通过 Redis 与 Sidekiq 进行通信,并直接或通过 TCP 间接访问 Unicorn
8. gitaly:后台服务,专门负责访问磁盘以高效处理 git 操作,并缓存耗时操作。所有的 git 操作都通过 Gitaly 处理
9. gitlab-workhorse:反向代理服务器,可以处理与 Rails 无关的请求(磁盘上的CSS、JS 文件等),处理Git Push/Pull 请求,处理到Rails的连接(修改由Rails发送的响应或发送给 Rails 的请求,管理 Rails 的长期 WebSocket 连接等)。
10. mail_room:处理邮件请求。回复 GitLab 发出的邮件时,GitLab 会调用此服务
Sidekiq. Unicorn 和 GitLab-shell 是GitLab中处理任务的 3 个程序。

四、使用极狐gitlib

参考:链接: link

4.1 初始登录说明

初始安装的用户为root
密码在 /etc/gitlab/initial_root_password
务必24小时之内登录并修改密码

[root@node2 ~]# grep "^Password" /etc/gitlab/initial_root_password
Password: pCC1wACGJ83RWngVaMx/EXptEc8QBtMpW/kjRkMyD6E=

登录,浏览器中输入:

http://192.168.199.202

在这里插入图片描述

去掉注册限制,不然谁都能注册
1、
在这里插入图片描述
2、
在这里插入图片描述
3、
在这里插入图片描述

4.2 新建用户

左上角主菜单 >> 选择管理员 >> 选择新建用户

在这里插入图片描述

开始新建用户

在这里插入图片描述

拉倒最后点击创建用户

在这里插入图片描述

我这里没有设置邮箱,所以手动设置密码。
点击保存后编辑用户信息即可设定密码。

在这里插入图片描述

密码 (最短为 8 个字符

在这里插入图片描述

拉到最后保存即可。

在这里插入图片描述

首次登录会要求更改密码,可以和旧密码一样

在这里插入图片描述

4.3 新建一个群组

在这里插入图片描述

开始新建

在这里插入图片描述

拉到最后点击创建群组

在这里插入图片描述

4.3 新建一个项目

左上角主菜单 >> 选择管理员 >> 选择新建项目
PS:其实路径很多
1、
在这里插入图片描述
2、

在这里插入图片描述

3、

在这里插入图片描述

4.4 在项目中邀请成员

加入到群组中也是一样的
菜单 >> 项目 >> 查看所有项目

在这里插入图片描述
1、
在这里插入图片描述
2、
在这里插入图片描述
3、
在这里插入图片描述

角色的区别

匿名用户   Guest       访客(只能创建问题和留言评论)
报告人     Reporter    可以理解为测试员、产品经理等,一般负责提交问题等
开发人员   Developer   负责项目开发
管理者     Master      一般是组长,负责对Master分支进行维护
所有者     Owner       一般是项目经理【拥有所有权限】

4.5 新建分支

多个分支可以更好的协同作业,提高效率
参考 4.4 先进到项目中
1、
在这里插入图片描述
2、
在这里插入图片描述

git地址

在这里插入图片描述

4.6 开启分支保护

栗子:

为test分支配置分支保护
这样拥有Developer权限的开发人员就不能修改test分支的代码
只能在dev分支做开发。
拥有Maintainers权限的项目经理定期将dev的代码合并到test分支

在这里插入图片描述

4.7 分支合并

如果按上一步设置了分支保护
Maintainers可以直接合并分支到test
Developer可以发起分支合并请求然后由Maintainers批准
合并的前提是dev新增了代码,且无代码冲突

先去掉删除源分支,不然合并之后分支没了

在这里插入图片描述

拉到最后,点击保存

在这里插入图片描述

开始模拟

先在dev上随便写一些代码用作模拟
1、
在这里插入图片描述
2、
在这里插入图片描述
3、

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

发起合并请求
点击左侧“合并请求”——“新建”
1、
在这里插入图片描述
2、
在这里插入图片描述
3、
在这里插入图片描述
4、
在这里插入图片描述

知识储备+1

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐