> 技术文档 > DevOps之gitlab入门篇_gitlab介绍

DevOps之gitlab入门篇_gitlab介绍


一、gitlab概述

1. GitLab 是什么?

  • 定义:GitLab 是一个基于 Git 的开源代码仓库管理工具,提供 一站式 DevOps 平台,支持从代码开发、协作、持续集成/持续部署(CI/CD)到项目管理的全生命周期开发流程。
  • 开源与许可证:最初完全开源,采用 MIT 许可证,后续推出企业版(EE)但保留社区版(CE)的开源特性。
  • 技术栈:由 Ruby on Rails 开发,部分功能用 Go 语言 重写以提升性能。
  • 适用场景:个人开发者、中小团队到大型企业,尤其适合需要 端到端 DevOps 流程 的组织。

2. 核心功能

GitLab 集成多种工具,覆盖软件开发的全流程:

(1) 代码托管与版本控制
  • Git 仓库管理:托管私有和公共代码仓库,支持分支、标签、合并请求(Merge Requests)等 Git 基础功能。
  • Web 界面:通过浏览器查看代码、提交历史、文件差异等。
(2) 持续集成/持续部署(CI/CD)
  • 内置 CI/CD 系统:通过 .gitlab-ci.yml 配置自动化构建、测试、部署流程。
  • 多环境支持:可集成 Kubernetes、Docker 等容器技术,实现全栈自动化。
(3) 项目管理与协作
  • 问题跟踪(Issue):记录任务、缺陷、需求,支持标签、优先级、指派成员。
  • 合并请求(Merge Requests):代码审查核心机制,支持讨论、评论、检查清单。
  • Wikis 和文档管理:为项目维护知识库和文档。
(4) 安全与合规
  • 代码安全扫描:集成 SAST(静态代码分析)、DAST(动态应用安全测试)等工具。
  • 审计日志:记录用户操作,满足企业级安全与合规要求(如 GDPR、HIPAA)。
(5) 容器与包管理
  • 容器注册表:存储和管理 Docker 镜像。
  • 包管理:支持 Maven、npm、Python 等包的托管与版本控制。
(6) 自托管与云服务
  • 灵活部署:可选择 自托管(社区版/企业版)或使用 GitLab.com 的云服务。
  • 私有化部署:适合对数据安全要求高的企业(如金融、医疗)。

3. 发展历程

  • 2011年:GitLab 作为开源项目启动,完全免费。
  • 2013年:拆分为 GitLab CE(社区版)GitLab EE(企业版),但两者仍开源。
  • 2014年:采用 开放核心(Open Core) 模式,EE 版本包含专有高级功能。
  • 2015年
    • 150万美元种子轮融资,后获 400万美元 A 轮2000万美元 B 轮
    • 客户包括 IBM、NASA、阿里巴巴、SpaceX 等。
  • 2017年:因系统管理员误删数据导致重大事故,后强化备份机制。
  • 2025年:推出 GitLab Duo,支持自托管 AI 平台,集成大语言模型(如 Mistral、Claude3.5),满足企业数据隐私需求。

4. 使用场景

  • 软件开发团队
    • 协作开发:通过分支管理和合并请求实现代码审查。
    • CI/CD 自动化:快速构建、测试和部署应用。
    • 项目跟踪:用 Issue 和 Milestones 管理任务进度。
  • 企业级需求
    • 安全合规:内置安全扫描和审计日志。
    • 私有化部署:完全控制数据,符合行业监管要求。
    • 规模化协作:支持千人团队协作,权限管理细致到代码仓库、分支级别。
  • DevOps 流程
    • 从代码提交到生产部署的全链路可视化,提升开发效率。

5. 优势与特点

对比 GitHub
功能 GitLab GitHub CI/CD 内置强大 CI/CD,无需额外插件 需依赖 GitHub Actions 或第三方工具 项目管理 强大的 Issue、Merge Request 流程 基础任务管理,需第三方工具补充 私有仓库 免费版支持私有仓库 免费版仅限开源项目,私有需付费 自托管 支持自托管(CE/EE) 仅提供云服务,无自托管选项 安全与合规 内置安全扫描和审计日志 需额外配置安全工具
核心优势
  • 一站式 DevOps:整合代码管理、CI/CD、项目管理、安全等工具,减少工具链切换。
  • 灵活性:支持自托管和云服务,适应不同规模企业需求。
  • 开源生态:社区版免费且开源,企业版提供商业支持。
  • AI 集成:2025年新增 AI 辅助编码(如 GitLab Duo),提升开发效率。

6. 典型用户

GitLab 被广泛应用于全球企业,包括:

  • 科技公司:IBM、SpaceX、阿里巴巴、NASA、CERN(欧洲核子研究组织)等。
  • 开源社区:支持个人开发者和开源项目托管。
  • 政府与机构:满足高安全要求的政府项目或医疗健康行业。

7. 总结

GitLab 是一个 全栈 DevOps 平台,从代码托管到部署运维一应俱全,尤其适合需要 端到端开发流程管理 的团队。其开源特性、自托管选项和内置安全功能,使其成为企业级 DevOps 的首选工具之一。若需更轻量化的代码托管,可考虑 GitHub;但若追求完整的 DevOps 工具链和私有化部署,GitLab 是更优选择。

二、gitlab的快速上手指南

一、Linux 原生安装(推荐 Ubuntu/Rocky Linux)

1. 环境要求

  • 最低配置
    • CPU:4 核(推荐 8 核以上)
    • 内存:8 GB(推荐 16 GB)
    • 存储:至少 2.5 GB(不含代码仓库)
  • 支持系统
    • Ubuntu 20.04+/22.04+
    • Rocky Linux 8+/9
    • 不支持 Windows/macOS(需通过虚拟机或容器运行)

2. 安装步骤

(1) 更新系统并安装依赖
# Ubuntu/Debiansudo apt update && sudo apt install -y curl openssh-server ca-certificates postfix# CentOS/Rocky Linuxsudo dnf update && sudo dnf install -y curl policycoreutils-python-utils openssh-server
(2) 添加 GitLab 官方仓库
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash # Debian/Ubuntucurl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash # CentOS/Rocky Linux
  • 或者使用清华镜像源加速
cat /etc/yum.repos.d/gitlab-ce.repo[gitlab-ce]name=Gitlab CE Repositorybaseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/gpgcheck=0enabled=1You have mail in /var/spool/mail/rootyum makecacheyum install gitlab-ce
(3) 安装 GitLab 社区版(CE)
sudo apt install gitlab-ce # Debian/Ubuntusudo dnf install gitlab-ce # CentOS/Rocky Linux
(4) 配置 GitLab
vim /etc/gitlab/gitlab.rb
  • 修改关键配置

    external_url \'http://your_server_ip\' # 替换为你的服务器IP或域名 配置访问url# 配置 SMTP(可选,用于邮件通知)gitlab_rails[\'smtp_enable\'] = truegitlab_rails[\'smtp_address\'] = \"smtp.qq.com\"gitlab_rails[\'smtp_port\'] = 465gitlab_rails[\'smtp_user_name\'] = \"your@qq.com\"gitlab_rails[\'smtp_password\'] = \"授权码\"gitlab_rails[\'smtp_authentication\'] = \"login\"gitlab_rails[\'smtp_tls\'] = true
(5) 重新加载配置
#使用gitlab.rb文件生成子配置文件gitlab-ctl reconfigure #重启所有gitlab相关文件. gitlab-ctl restart
(6) 防火墙设置
# Ubuntu/Debiansudo ufw allow 80,443,22 # 允许 HTTP/SSHsudo ufw reload# CentOS/Rocky Linuxsudo firewall-cmd --permanent --add-port={80,443,22}/tcpsudo firewall-cmd --reload
(7) 访问 GitLab
  • 打开浏览器,访问 http://your_server_ip

  • 初始账号root

  • 初始密码:通过命令查看:

    cat /etc/gitlab/initial_root_password

二、rpm包安装

  • https://packages.gitlab.com/gitlab/gitlab-ce
 # 1. 下载wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/ol/8/gitlab-ce-17.9.7-ce.0.el8.x86_64.rpm/download.rpm # 2. 安装rpm -Uvh gitlab-ce-17.9.7-ce.0.el8.x86_64.rpm # 3. 配置并启动 vim /etc/gitlab/gitlab.rb external_url \'http://your_server_ip\' # 替换为你的服务器IP或域名gitlab-ctl reconfigure

三、Docker 快速部署

1. 准备工作

  • 确保已安装 Docker 和 Docker Compose:
    ###查看上一博客文章安装https://blog.csdn.net/m0_57194659/article/details/147411777?spm=1011.2124.3001.6209

2. 创建配置文件

mkdir -p /data/gitlab/{config,logs,data}cd /data/gitlab/

创建 docker-compose.yml 文件:

services: gitlab: container_name: devops_gitlab image: gitlab/gitlab-ce:latest restart: always hostname: gitlab.yourdomain.com # 替换为你的域名或IP ports: - \"80:80\" # HTTP - \"443:443\" # HTTPS - \"2222:22\" # SSH(端口映射到宿主机2222) volumes: - /data/gitlab/config:/etc/gitlab - /data/gitlab/logs:/var/log/gitlab - /data/gitlab/data:/var/opt/gitlab environment: - GITLAB_OMNIBUS_CONFIG=external_url \'http://your_server_ip\' # 替换为你的域名或IP

3. 启动服务

docker-compose up -d

4. 获取初始密码

docker exec -it gitlab grep \'Password:\' /etc/gitlab/initial_root_passwordgrep \'Password:\' /data/gitlab/config/initial_root_password

四、常见问题与优化

1. 安装慢?更换镜像源

# 修改 GitLab 仓库源为清华镜像(以 CentOS 为例)vim /etc/yum.repos.d/gitlab-ce.repo# 将 baseurl 改为:baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/##或查看清华大学开源软件镜像站帮助文档 https://mirrors.tuna.tsinghua.edu.cn/help/gitlab-ce/[gitlab-ce]name=Gitlab CE Repositorybaseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/gpgcheck=0enabled=1

2. 修改默认端口

  • 编辑 gitlab.rb
    nginx[\'listen_port\'] = 8080 # 修改 HTTP 端口gitlab_rails[\'gitlab_shell_ssh_port\'] = 2222 # 修改 SSH 端口

*3. gitlab汉化

在这里插入图片描述

在这里插入图片描述

  • 选择保存后按键盘F5刷新就更改完成了

五、验证安装

  1. 浏览器访问 http://your_server_ip,使用初始密码登录。
  2. 修改密码并完善配置。

六、重置密码

gitlab-rake \"gitlab:password:reset\"
  • 容器安装的话就进入容器内执行命令

七、配置建议

  • 安全设置

    • 启用 HTTPS(推荐 Let’s Encrypt)。
    • 配置双因素认证(2FA)。
  • 性能优化

    • 使用 SSD 存储。
    • 根据用户量升级 CPU/内存(参考 GitLab 官方硬件要求)。
  • 备份

    sudo gitlab-backup create

安装完成!

三、Gitlab上手小案例

1.创建用户组:dev

在这里插入图片描述

2.创建用户:dev

  • 权限要是owner权限

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

  • 设置密码
    在这里插入图片描述

3.关联用户与用户组

  • 进入群组中,选择邀请成员

在这里插入图片描述

4.创建项目

  • 进入主页—>项目—>新建项目—>创建空白项目

在这里插入图片描述

5.推送代码

1.克隆现有的 Git 仓库

[root@k8s-master02 app-project]# mkdir /app/code/[root@k8s-master02 app-project]# git config --global user.email \"dev@qq.com\"[root@k8s-master02 app-project]# git config --global user.name \"dev\"[root@k8s-master02 code]# git clone http://192.168.130.61/dev1/app-project.git

2.推送分支

[root@k8s-master02 app-project]# >index.html[root@k8s-master02 app-project]# git add .[root@k8s-master02 app-project]# git commit -m \'初次提交\'[root@k8s-master02 app-project]# git push origin main

3.检查结果

在这里插入图片描述

四、gitlab备份与恢复

  • 目标
    • 备份Gitlab相关的配置文件
    • 备份Gitlab中的程序代码(代码仓库(项目),用户,用户组,密钥.)

1. 备份Gitlab服务的配置

  • /etc/gitlab目录下所有内容即可,docker备份好对应的挂载目录即可

2.备份Gitlab里面的内容

对gitlab进行备份将会创建一个包含所有库和附件的归档文件。对备份的恢复只能恢复到与备份时的gitlab相同的版本。将gitlab迁移到另一台服务器上的最佳方法就是通过备份和还原。

gitlab提供了一个简单的命令行来备份整个gitlab,并且能灵活的满足需求。

  • 配置
###修改gitlab.rb文件##配置文件/etc/gitlab/gitlab.rb 中加入gitlab_rails[\'manage_backup_path\'] = true  #是否可以指定备份目录gitlab_rails[\'backup_path\'] = \'/var/opt/gitlab/gitlab-backup\' #备份目录gitlab_rails[\'backup_archive_permissions\'] = 0600 #备份的压缩包权限gitlab_rails[\'backup_keep_time\'] = 604800  #备份保留多久 7天 mkdir /data/gitlab/data/gitlab-backup/#然后执行gitlab-ctl reconfigure####部署的是docker容器版本注意部署方式路径不同

3.手动备份

[root@devops_gitlab gitlab]# docker exec -it devops_gitlab gitlab-backup create###检查备份[root@devops_gitlab gitlab]# ll data/gitlab-backup/总用量 752-rw------- 1 chrony polkitd 768000 4月 27 15:18 1745738275_2025_04_27_17.11.0_gitlab_backup.tar[root@devops_gitlab gitlab]# 

4.恢复

  1. 停止写入类服务
gitlab-ctl stop unicorn gitlab-ctl stop sidekiq
  1. gitlab-rake恢复 (不需要加tar)
##可尝试删除一个仓库文件在进行恢复看看效果gitlab-backup restore BACKUP=1745738275_2025_04_27_17.11.0_gitlab_backup

3.重启 gitlab

 gitlab-ctl restart
  • 书写脚本定时备份,在传送到备份服务器备份

五、 迁移与升级

  • gitlab升级的要求
    • 需要遵循以下升级步骤以确保主版本升级成功:
      • 1.升级至之前主要版本的最新次要版本。
      • 2.升级到目标主要版本的第一个次要版本(X.0.Z)。
      • 3.继续升级到较新的版本。

六、 Https

  • 为了防止内网渗透,将gitlab服务的访问添加了ssl,具体步骤如下:
 external_url \'https:freedome.com\' nginx[\' enable\' ] = true nginx[\'client_max_body_size\' ]= \'250m \' nginx[\'redirect_http_to_https\' ]= true nginx[\' redirect_http_to_https _port\' ] = 443 nginx[\'ssl_certificate\' ] = \"path/ key.crt\" nginx[\'ssl_certificate_key\'] = \"path/ key.key\" nginx[\'ssl_ciphers\' ] =\"ECDHE-RSA-AES256-GCMSHA384:ECDHE-RSA-AES128-GCM-SHA256\" nginx[\'ssl_prefer_server_ciphers\']= \"on\" nginx[\'ssl_protocols\']= \"TLSv1.2\" nginx[\'ssl_session_cache \' ] = \"builtin:1000shared:sSL: 10m\" nginx[\'ssl_session_timeout\']= \"5m\" ###核心:nginx[\'ssl_certificate\' ] =用于指定证书 .crt .pemnginx[\'ssl_certificate_key\'] = 用于指定私钥 .key ##2.gitlab重新初始化gitlab-ctl reconfigure##重建配置:gitlab-ctl restart

七、优化

关闭目前不使用的组件 默认都是true 修改为 false

  • 关闭prometheus
prometheus[\'enable\'] = falseprometheus[\'monitor_kubernetes\'] = false
  • 关闭alertmanger
alertmanager[\'enable\'] = false
  • 关闭exporter 如果需要prometheus监控 则可以打开。
node_exporter[\'enable\'] = falseredis_exporter[\'enable\'] = falsepostgres_exporter[\'enable\'] = falsegitlab_monitor[\'enable\'] = false #gitlab_exporterprometheus_monitoring[\'enable\'] = falsegrafana[\'enable\'] = false