当前位置: 首页 > news >正文

gitlab的使用

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

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

        • 使用GitLab私有仓库

目录

一、安装配置gitlab

安装

初始化

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

查看状态

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

三、gitlab 命令行修改密码

四、gitlab服务管理

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

六、Gitlab 备份与恢复

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

2、数据备份

3、测试数据恢复

(1) 安装部署 gitlab server

(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/backupschmod 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 unicorngitlab-ctl start sidekiq或gitlab-ctl restart

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

希望能够帮助到大家!!

相关文章:

gitlab的使用

前一篇文章我们已经知道Git人人都是中心,那他们怎么交互数据呢? • 使用GitHub或者码云等公共代码仓库 • 使用GitLab私有仓库 目录 一、安装配置gitlab 安装 初始化 这里初始化完成以后需要记住一个初始密码 查看状态 二、使用浏览器访问&#xf…...

基于springboot+vue的植物健康系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…...

Python爬虫实战入门:爬取360模拟翻译(仅实验)

文章目录 需求所需第三方库requests 实战教程打开网站抓包添加请求头等信息发送请求,解析数据修改翻译内容以及实现中英互译 完整代码 需求 目标网站:https://fanyi.so.com/# 要求:爬取360翻译数据包,实现翻译功能 所需第三方库 …...

微服务-微服务API网关Spring-clould-gateway实战

1. 需求背景 在微服务架构中,通常一个系统会被拆分为多个微服务,面对这么多微服务客户端应该如何去调用呢? 如果根据每个微服务的地址发起调用,存在如下问题: 1.客户端多次请求不同的微服务,会增加客户端…...

ECMAScript modules规范示例详解

ECMAScript modules(简称 ES modules)是JavaScript的标准模块系统。每个模块都是一个独立的JavaScript文件,可以在其中定义导出的变量、函数或类,并从其他模块中导入这些变量、函数或类。以下是ES modules规范的一些示例和详解&am…...

【OpenFeign常用配置】

OpenFeign常用配置 快速入门:1、引入依赖2、启用OpenFeign 实践1、引入依赖2、开启连接池功能3、模块划分4、日志5、重试 快速入门: OpenFeign是一个声明式的http客户端,是spring cloud在eureka公司开源的feign基础上改造而来。其作用及时基于…...

第2.1章 StarRocks表设计——概述

注:本篇文章阐述的是StarRocks-3.2版本的表设计相关内容。 建表是使用StarRocks非常重要的一环,规范化的表设计在某些场景下能使查询性能有数倍的提升。StarRocks的表设计涉及到的知识点主要包括数据表类型、数据分布(分区分桶及排序键&#…...

WooCommerce商品采集与发布插件

如何采集商品或产品信息,并自动发布到Wordpress系统的WooCommerce商品? 推荐使用简数采集器,操作简单方便,且无缝衔接WooCommerce插件,快速完成商品的采集与发布。 简数采集器的智能自动生成采集规则和可视化操作功能…...

select滑动分页请求数据

需求背景 Antd 的 select 组件支滑动分页获取后端数据 实现滑动加载数据 定义变量 const allLoadedRef useRef<boolean>(true); // 是否触底 const [current, setCurrent] useState<number>(1); // 当前页 const [list, setList] useState([]); // 列表定义…...

【Go channel如何控制goroutine并发执行顺序?】

多个goroutine并发执行时&#xff0c;每一个goroutine抢到处理器的时间点不一致&#xff0c;gorouine的执行本身不能保证顺序。即代码中先写的gorouine并不能保证先执行 思路&#xff1a;使用channel进行通信通知&#xff0c;用channel去传递信息&#xff0c;从而控制并发执行…...

逆向分析Cobalt Strike安装后门

Cobalt Strike简介 Cobalt Strike是一款基于java的渗透测试神器&#xff0c;也是红队研究人员的主要武器之一&#xff0c;功能非常强大&#xff0c;非常适用于团队作战&#xff0c;Cobalt Strike集成了端口转发、服务扫描&#xff0c;自动化溢出&#xff0c;多模式端口监听&am…...

【嵌入式学习】QT-Day3-Qt基础

1> 思维导图 https://lingjun.life/wiki/EmbeddedNote/20QT 2> 完善登录界面 完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后…...

【杭州游戏业:创业热土,政策先行】

在前面的文章中&#xff0c;我们探讨了上海、北京、广州、深圳等城市的游戏产业现状。现在&#xff0c;我们切换视角&#xff0c;来看看另一个游戏创业热土——杭州的发展情况 最近第19届亚运会在杭州举办&#xff0c;本次亚运会上&#xff0c;电子竞技首次获准列为正式比赛项…...

Python-pdfplumber读取PDF内容

文章目录 前言一、pdfplumber模块1.1 pdfplumber的特点1.2 pdfplumber.PDF类1.3pdfplumber.Page类 二 pdfplumber的使用2.1 加载PDF2.2 pdfplumber.PDF 类2.3 pdfplumber.Page 类2.4 读取PDF2.5 读取PDF文档信息2.6 查看总页数2.7 查看总页数读取第一页的宽度&#xff0c;页高等…...

js设计模式汇总

目录 前言: 单篇目录: 工厂模式 单例模式 发布订阅模式 观察者模式 中介者模式 建造者模式 解释器模式 依赖注入模式 享元模式 路由模式 计算属性模式 委托者模式 访问者模式 外观模式 备忘录模式 过滤器模式 模板方法模式 状态模式 桥接模式 原型模式 组…...

【Java面试】MongoDB

目录 1、mongodb是什么&#xff1f;2、mongodb特点什么是NoSQL数据库&#xff1f;NoSQL和RDBMS有什么区别&#xff1f;在哪些情况下使用和不使用NoSQL数据库&#xff1f;NoSQL数据库有哪些类型?启用备份故障恢复需要多久什么是master或primary什么是secondary或slave系列文章版…...

在苹果电脑MAC上安装Windows10(双系统安装的详细图文步骤教程)

在苹果电脑MAC上安装Windows10&#xff08;双系统安装的详细图文步骤教程&#xff09; 一、准备工作准备项1&#xff1a;U盘作为系统安装盘准备项2&#xff1a;您需要安装的系统镜像 二、启动转换助理步骤1&#xff1a;找到启动转换助理步骤2&#xff1a;启动转换助理步骤3&…...

18V/5A桥式驱动芯片-SS6285L兼容替代RZ7889

SS6285L是一款由工采网代理的率能DC双向马达驱动电路芯片&#xff1b;该芯片采用SOP8封装&#xff0c;符合ROHS规范&#xff0c;引脚框架100%无铅&#xff1b;它适用于玩具等类的电机驱动、自动阀门电机驱动、电磁门锁驱动等应用。 &#xff08;1&#xff09;产品描述&#xff…...

C++ Primer 笔记(总结,摘要,概括)——第3章 字符串、向量和数组

目录 3.1 命名空间的using声明 3.2 标准库类型string 3.2.1 定义和初始化string对象 3.2.2 string对象上的操作 3.2.3 处理string对象中的字符 3.3 标准库类型vector 3.3.1 定义和初始化vector对象 3.3.2 向vector对象中添加元素 3.3.3 其他vector操作 3.4 迭代器介绍 3.4.…...

Sora:OpenAI引领AI视频新时代

Sora - 探索AI视频模型的无限可能 随着人工智能技术的飞速发展&#xff0c;AI视频模型已成为科技领域的新热点。而在这个浪潮中&#xff0c;OpenAI推出的首个AI视频模型Sora&#xff0c;以其卓越的性能和前瞻性的技术&#xff0c;引领着AI视频领域的创新发展。让我们将一起探讨…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...