极狐gitlib的安装和使用

  • 一、实验环境
  • 二、安装部署(不带邮箱)
  • 三、一些操作
  • 3.1 常用命令
  • 3.2 备份
  • 3.2.1 备份文件分为两步:
  • 3.2.2 自定义备份位置
  • 3.3 恢复
  • 3.4 一些问题
  • 3.5 包含的组件
  • 四、使用极狐gitlib
  • 4.1 初始登录说明
  • 4.2 新建用户
  • 4.3 新建一个群组
  • 4.3 新建一个项目
  • 4.4 在项目中邀请成员
  • 4.5 新建分支
  • 4.6 开启分支保护
  • 4.7 分支合并

一、实验环境

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

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

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

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

会有提示说需要手动备份配置文件,就是上一个步骤

极狐gitlab关闭注册 极狐 gitlab_极狐gitlab关闭注册


如果定时备份,例如每天凌晨2点30分备份

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

上面的备份结果如下:

极狐gitlab关闭注册 极狐 gitlab_极狐gitlab关闭注册_02

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

极狐gitlab关闭注册 极狐 gitlab_vim_03

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

极狐gitlab关闭注册 极狐 gitlab_极狐gitlab关闭注册_04

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

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

会有pg报错,不过好像没什么影响

极狐gitlab关闭注册 极狐 gitlab_vim_05


为了保险起见,可以参考一下别人的处理(这里放在重启之后)

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

极狐gitlab关闭注册 极狐 gitlab_ide_06

去掉注册限制,不然谁都能注册

1、

极狐gitlab关闭注册 极狐 gitlab_运维_07


2、

极狐gitlab关闭注册 极狐 gitlab_ide_08


3、

极狐gitlab关闭注册 极狐 gitlab_vim_09

4.2 新建用户

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

极狐gitlab关闭注册 极狐 gitlab_git_10

开始新建用户

极狐gitlab关闭注册 极狐 gitlab_ide_11

拉倒最后点击创建用户

极狐gitlab关闭注册 极狐 gitlab_ide_12

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

极狐gitlab关闭注册 极狐 gitlab_git_13

密码 (最短为 8 个字符

极狐gitlab关闭注册 极狐 gitlab_极狐gitlab关闭注册_14

拉到最后保存即可。

极狐gitlab关闭注册 极狐 gitlab_运维_15

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

极狐gitlab关闭注册 极狐 gitlab_极狐gitlab关闭注册_16

4.3 新建一个群组

极狐gitlab关闭注册 极狐 gitlab_vim_17

开始新建

极狐gitlab关闭注册 极狐 gitlab_vim_18

拉到最后点击创建群组

极狐gitlab关闭注册 极狐 gitlab_运维_19

4.3 新建一个项目

左上角主菜单 >> 选择管理员 >> 选择新建项目

PS:其实路径很多

1、

极狐gitlab关闭注册 极狐 gitlab_极狐gitlab关闭注册_20


2、

极狐gitlab关闭注册 极狐 gitlab_ide_21

3、

极狐gitlab关闭注册 极狐 gitlab_运维_22

4.4 在项目中邀请成员

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

极狐gitlab关闭注册 极狐 gitlab_git_23


1、

极狐gitlab关闭注册 极狐 gitlab_git_24


2、

极狐gitlab关闭注册 极狐 gitlab_运维_25


3、

极狐gitlab关闭注册 极狐 gitlab_ide_26

角色的区别

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

4.5 新建分支

多个分支可以更好的协同作业,提高效率

参考 4.4 先进到项目中

1、

极狐gitlab关闭注册 极狐 gitlab_运维_27


2、

极狐gitlab关闭注册 极狐 gitlab_ide_28

git地址

极狐gitlab关闭注册 极狐 gitlab_极狐gitlab关闭注册_29

4.6 开启分支保护

栗子:

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

极狐gitlab关闭注册 极狐 gitlab_git_30

4.7 分支合并

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

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

极狐gitlab关闭注册 极狐 gitlab_vim_31

拉到最后,点击保存

极狐gitlab关闭注册 极狐 gitlab_运维_32

开始模拟

先在dev上随便写一些代码用作模拟

1、

极狐gitlab关闭注册 极狐 gitlab_vim_33


2、

极狐gitlab关闭注册 极狐 gitlab_极狐gitlab关闭注册_34


3、

极狐gitlab关闭注册 极狐 gitlab_git_35


3、

极狐gitlab关闭注册 极狐 gitlab_git_36

发起合并请求

点击左侧“合并请求”——“新建”

1、

极狐gitlab关闭注册 极狐 gitlab_ide_37


2、

极狐gitlab关闭注册 极狐 gitlab_运维_38


3、

极狐gitlab关闭注册 极狐 gitlab_极狐gitlab关闭注册_39


4、

极狐gitlab关闭注册 极狐 gitlab_运维_40

知识储备+1