目录
1. Gitlab命令行修改管理员密码
2. Gitlab服务管理
3. 公司的开发代码提交处理流程
4. Gitlab 备份与恢复
数据备份
测试数据恢复
5. 邮箱配置
1. Gitlab命令行修改管理员密码
[root@tty01 ~]# gitlab-rails console -e production # 启动GitLab的Rails控制台
--------------------------------------------------------------------------------Ruby: ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux]GitLab: 16.11.5-jh (3a067aedcc3) EEGitLab Shell: 14.35.0PostgreSQL: 14.11
------------------------------------------------------------[ booted in 50.69s ]
Loading production environment (Rails 7.0.8.1)
irb(main):001:0> user = User.where(id: 1).first # id为1的是超级管理员
=> #<User id:1 @root>
irb(main):002:0> user.password = 'Qq111111' # 密码必须至少8个字符
=> "Qq111111"
irb(main):003:0> user.save! # 如没有问题 返回true
=> true
irb(main):004:0> exit # 退出
2. Gitlab服务管理
gitlab-ctl start # 启动所有 gitlab 组件;
gitlab-ctl stop # 停止所有 gitlab 组件;
gitlab-ctl restart # 重启所有 gitlab 组件;
gitlab-ctl status # 查看服务状态;
gitlab-ctl reconfigure # 启动服务;
vim /etc/gitlab/gitlab.rb # 修改默认的配置文件;
gitlab-ctl tail # 查看日志;
3. 公司的开发代码提交处理流程
-
项目经理(PM)在GitLab中创建任务,分配给开发人员:
- PM使用GitLab的Issue功能创建任务,并指定任务的详细描述和要求。
- 将任务分配给具体的开发人员,设置优先级和截止日期。
-
开发人员领取任务后,在本地使用git clone拉取代码库:
- 开发人员在本地终端中执行命令:
git clone <仓库地址>
- 克隆代码库到本地开发环境。
- 开发人员在本地终端中执行命令:
-
开发人员创建开发分支,并进行开发:
- 在本地创建一个新的开发分支,例如
dev
:git checkout -b dev
- 在
dev
分支上进行代码开发和修改。
- 在本地创建一个新的开发分支,例如
-
开发人员完成开发后,提交到本地仓库:
- 在本地提交代码修改:
git add . git commit -m "完成任务描述"
- 在本地提交代码修改:
-
开发人员在GitLab界面上申请分支合并请求(Merge request):
- 将本地分支推送到远程仓库:
git push origin dev
- 登录GitLab,在项目的Merge Requests页面中创建新的Merge Request,选择要合并的源分支和目标分支(通常是
master
或main
)。
- 将本地分支推送到远程仓库:
-
PM在GitLab上查看提交和代码修改情况,确认无误后,确认将开发人员的分支合并到主分支:
- PM在GitLab上审查Merge Request,包括代码的改动和提交记录。
- 如果一切正常,PM会批准Merge Request,将
dev
分支合并到master
分支。
-
开发人员在GitLab上Mark done确认开发完成,并关闭Issue:
- 开发人员在提交Merge Request时,可以在描述中添加
close #1
(其中#1
是Issue编号),这样在Merge Request被合并时,相关的Issue会自动关闭。 - 如果没有在描述中添加关闭Issue的指令,开发人员可以在Issue页面手动关闭Issue。
- 开发人员在提交Merge Request时,可以在描述中添加
4. Gitlab 备份与恢复
查看系统版本和软件版本
[root@tty01 ~]# cat /etc/redhat-release
Rocky Linux release 9.4 (Blue Onyx)
[root@tty01 ~]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
16.11.5-jh
数据备份
打开/etc/gitlab/gitlab.rb配置文件,查看一个和备份相关的配置项:
[root@tty01 ~]# vim /etc/gitlab/gitlab.rb #启用下述两个配置项
gitlab_rails['manage_backup_path'] = true #指定GitLab是否应该自动管理备份路径
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups" #指定GitLab备份文件的存储路径
该项定义了默认备份出文件的路径,可以通过修改该配置,并执行 gitlab-ctl reconfigure 或者 gitlab-ctl restart 重启服务生效。
[root@tty01 ~]# gitlab-ctl reconfigure
或
[root@tty01 ~]# gitlab-ctl restart
执行备份命令进行备份
[root@tty01 ~]# gitlab-rake gitlab:backup:create
执行改命令后回有一个警告提示:gitlab.rb
和gitlab-secrets.json
文件包含敏感数据,并未包含在此备份中。恢复备份时,需要手动备份这些文件。
当然这些也可以去结合计划任务去做。
查看备份目录里的文件是否正常存在了
[root@tty01 ~]# ls /var/opt/gitlab/backups/
1720624341_2024_07_10_16.11.5-jh_gitlab_backup.tar
设置备份保留时常,防止每天执行备份,肯定有目录被爆满的风险,打开/etc/gitlab/gitlab.rb配置文件,找到如下配置:
[root@tty01 ~]# vim /etc/gitlab/gitlab.rb # 启用下述两个配置项
gitlab_rails['backup_keep_time'] = 604800 # 设置备份文件过期时间,604800秒等于7天
该配置的时间以秒为单位,如果想增大或减小,可以直接在该处配置,并通过gitlab-ctl restart 重启服务生效。
备份完成,会在备份目录中生成一个当天日期的tar包。
测试数据恢复
登录一个管理用户,删除库项目
恢复前需要先停掉数据连接服务:
[root@tty01 ~]# gitlab-ctl stop unicorn
[root@tty01 ~]# gitlab-ctl stop sidekiq
如果是台新搭建的主机,一般不需要停止数据连接操作,理论上不停这两个服务也可以。停这两个服务是为了保证数据一致性。一般会将老服务器/data/gitlab/backups目录下的备份文件拷贝到新服务器上的/data/gitlab/backups去恢复,这里实验环境就在本机做恢复了。
注意权限:600权限是无权恢复的。 实验环境可改成了777,生产环境建议修改属主属组
执行命令后等待一会......,后面再输入两次yes就完成恢复了。
[root@tty01 ~]# cd /var/opt/gitlab/backups/ #进入数据备份目录
[root@tty01 backups]# gitlab-rake gitlab:backup:restore BACKUP=1720624341_2024_07_10_16.11.5-jh
注意这里BACKUP=后面的文件名,在较新的版本中,不可以使用全名,_gitlab_backup.tarh会自动加上,所以这里文件名后面那点就不能再写了。
恢复完成后,现在重启所有服务,或者只启动前方关闭的两个数据连接服务均可
[root@tty01 backups]# gitlab-ctl restart
或
[root@tty01 backups]# gitlab-ctl start unicorn
[root@tty01 backups]# gitlab-ctl start sidekiq
注意:通过备份文件恢复gitlab必须保证两台主机的gitlab版本一致,否则会提示版本不匹配
此时刷新或重登账户即可看到被删除的数据
5. 邮箱配置
其中注意修改成你的邮箱,邮件服务商,授权码,端口等信息
[root@tty01 ~]# vim /etc/gitlab/gitlab.rb #找到并替换邮箱配置,更改你的邮箱进行测试
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "newrain_wang@163.com"
gitlab_rails['smtp_password'] = "UWYNCPQOBQFCDLIW"
gitlab_rails['smtp_domain'] = "smtp.163.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = false
gitlab_rails['smtp_tls'] = true
gitlab_rails['smtp_pool'] = false
gitlab_rails['gitlab_email_from'] = 'newrain_wang@163.com'
设置好后保存退出,然后重载配置。
[root@tty01 ~]# gitlab-ctl reconfigure #重新配置 GitLab 服务
登录web页面,随便登录一个用户,在之前我们用的随便填的邮箱格式,现在我们修改成自己真实的邮箱进行测试我们的邮箱配置。
更改点击保存后会弹出需要去邮箱点击确认进行验证
来到邮箱,可以看到发件人就是我在配置中填写的一个qq邮箱,给用户更改的邮箱发送了一个验证
点击验证会跳转一个新页面,可以看到该用户已经成功更改了邮箱