gitlab的使用

前一篇文章我们已经知道Git人人都是中心,那他们怎么交互数据呢?

• 使用GitHub 或者码云等公共代码仓库

• 使用GitLab私有仓库

目录

一、安装配置gitlab

安装

初始化

这里初始化完成以后需要记住一个初始密码

查看状态

二、使用浏览器访问,进行web界面操作

[三、gitlab 命令行修改密码](#三、gitlab 命令行修改密码)

四、gitlab服务管理

五、公司的开发代码提交处理流程

[六、Gitlab 备份与恢复](#六、Gitlab 备份与恢复)

1、查看系统版本和软件版本

2、数据备份

3、测试数据恢复

[(1) 安装部署 gitlab server](#(1) 安装部署 gitlab server)

[(2) 恢复 gitlab](#(2) 恢复 gitlab)


一、安装配置gitlab

安装

复制代码
安装依赖,并启动ssh、防火墙开启相应端口、postfix
yum install -y curl policycoreutils-python openssh-server perl
复制代码
gitlab版本选择地
Index of /gitlab-ce/yum/el7/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

选择对应的版本安装动
 yum install gitlab-jh-16.0.3-jh.0.el7.x86_64.rpm

安装完成后他会自动启动

初始化

vim /etc/gitlab/gitlab.rb

#找到下行并修改自己的ip
external_url 'http://10.12.153.72'  
复制代码
执行下面的初始化命令
gitlab-ctl reconfigure

这里初始化完成以后需要记住一个初始密码

cat /etc/gitlab/initial_root_password

查看状态

 gitlab-ctl status
复制代码

二、使用浏览器访问,进行web界面操作

输入账号密码登录

登陆以后我们首先修改为中文,点击头像,点击参数中设置

选择中文后提交并刷新页面

这样看来就一目了然了哈

三、gitlab 命令行修改密码

复制代码
gitlab-rails console production
irb(main):001:0> user = User.where(id: 1).first     # id为1的是超级管理员
irb(main):002:0> user.password = 'yourpassword'      # 密码必须至少8个字符
irb(main):003:0> user.save!                          # 如没有问题 返回true
exit                                                # 退出

四、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                         # 查看日志

五、公司的开发代码提交处理流程

PM(项目主管/项目经理)在gitlab创建任务,分配给开发人员 开发人员领取任务后,在本地使用git clone拉取代码库 开发人员创建开发分支(git checkout -b dev),并进行开发 开发人员完成之后,提交到本地仓库(git commit ) 开发人员在gitlab界面上申请分支合并请求(Merge request) PM在gitlab上查看提交和代码修改情况,确认无误后,确认将开发人员的分支合并到主分支(master) 开发人员在gitlab上Mark done确认开发完成,并关闭issue。这一步在提交合并请求时可以通过描述中填写"close #1"等字样,可以直接关闭issue

六、Gitlab 备份与恢复

1、查看系统版本和软件版本
cat /etc/redhat-release 
CentOS Linux release 7.3.1611 (Core) 
​
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
8.15.4
2、数据备份

打开/etc/gitlab/gitlab.rb配置文件,查看一个和备份相关的配置项:

复制代码
gitlab_rails['backup_path'] = "/data/gitlab/backups"

该项定义了默认备份出文件的路径,可以通过修改该配置,并执行 gitlab-ctl reconfigure 或者 gitlab-ctl restart 重启服务生效。

执行备份命令进行备份

复制代码
/opt/gitlab/bin/gitlab-rake gitlab:backup:create 

也可以添加到 crontab 中定时执行:

复制代码
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create

可以到/data/gitlab/backups找到备份包,解压查看,会发现备份的还是比较全面的,数据库、repositories、build、upload等分类还是比较清晰的。

设置备份保留时常,防止每天执行备份,肯定有目录被爆满的风险,打开/etc/gitlab/gitlab.rb配置文件,找到如下配置:

复制代码
gitlab_rails['backup_keep_time'] = 604800

设置备份保留7天(7360024=604800),秒为单位,如果想增大或减小,可以直接在该处配置,并通过gitlab-ctl restart 重启服务生效。

备份完成,会在备份目录中生成一个当天日期的tar包。

3、测试数据恢复
(1) 安装部署 gitlab server

具体步骤参见上面:gitlab server 搭建过程

(2) 恢复 gitlab

打开/etc/gitlab/gitlab.rb配置文件,查看一个和备份相关的配置项:

gitlab_rails['backup_path'] = "/data/gitlab/backups"

修改该配置,定义了默认备份出文件的路径,并执行 gitlab-ctl reconfigure 或者 gitlab-ctl restart 重启服务生效。

恢复前需要先停掉数据连接服务:

gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

如果是台新搭建的主机,不需要操作,理论上不停这两个服务也可以。停这两个服务是为了保证数据一致性。将老服务器/data/gitlab/backups目录下的备份文件拷贝到新服务器上的/data/gitlab/backups

rsync -avz 1530773117_2019_03_05_gitlab_backup.tar 192.168.95.135:/data/gitlab/backups/ 

注意权限:600权限是无权恢复的。 实验环境可改成了777,生产环境建议修改属主属组

 pwd
/data/gitlab/backups

chmod 777 1530773117_2019_03_05_gitlab_backup.tar 
​​​​​​​
 ll
total 17328900
-rwxrwxrwx 1 git git 17744793600 Jul  5 14:47 1530773117_2018_07_05_gitlab_backup.tar

执行下面的命令进行恢复:后面再输入两次yes就完成恢复了。

gitlab-rake gitlab:backup:restore 
​​​​​​​BACKUP=1530773117_2018_07_05_gitlab_backup.tar

恢复完成后,启动刚刚的两个服务,或者重启所有服务,再打开浏览器进行访问,发现数据和之前的一致:

gitlab-ctl start unicorn

gitlab-ctl start sidekiq

或

gitlab-ctl restart

注意:通过备份文件恢复gitlab必须保证两台主机的gitlab版本一致,否则会提示版本不匹配

希望能够帮助到大家!!

相关推荐
耶啵奶膘1 小时前
uniapp-是否删除
linux·前端·uni-app
_.Switch2 小时前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
2401_850410832 小时前
文件系统和日志管理
linux·运维·服务器
JokerSZ.2 小时前
【基于LSM的ELF文件安全模块设计】参考
运维·网络·安全
XMYX-03 小时前
使用 SSH 蜜罐提升安全性和记录攻击活动
linux·ssh
芯盾时代3 小时前
数字身份发展趋势前瞻:身份韧性与安全
运维·安全·网络安全·密码学·信息与通信
心灵彼岸-诗和远方4 小时前
DevOps业务价值流:架构设计最佳实践
运维·产品经理·devops
一只哒布刘4 小时前
NFS服务器
运维·服务器
苹果醋35 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
二十雨辰5 小时前
[linux]docker基础
linux·运维·docker