DevOps之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
功能GitLabGitHub
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/Debian
sudo apt update && sudo apt install -y curl openssh-server ca-certificates postfix

# CentOS/Rocky Linux
sudo 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/Ubuntu
curl 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 Repository
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
You have mail in /var/spool/mail/root

yum makecache
yum install gitlab-ce
(3) 安装 GitLab 社区版(CE)
sudo apt install gitlab-ce          # Debian/Ubuntu
sudo 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'] = true
    gitlab_rails['smtp_address'] = "smtp.qq.com"
    gitlab_rails['smtp_port'] = 465
    gitlab_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/Debian
sudo ufw allow 80,443,22      # 允许 HTTP/SSH
sudo ufw reload

# CentOS/Rocky Linux
sudo firewall-cmd --permanent --add-port={80,443,22}/tcp
sudo 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_password

grep  '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 Repository
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=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-GCM
SHA384: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 .pem
nginx['ssl_certificate_key']  = 用于指定私钥 .key 

##2.gitlab重新初始化
gitlab-ctl reconfigure
##重建配置:
gitlab-ctl restart

七、优化

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

  • 关闭prometheus
prometheus['enable'] = false
prometheus['monitor_kubernetes'] = false
  • 关闭alertmanger
alertmanager['enable'] = false
  • 关闭exporter 如果需要prometheus监控 则可以打开。
node_exporter['enable'] = false
redis_exporter['enable'] = false
postgres_exporter['enable'] = false
gitlab_monitor['enable'] = false 
#gitlab_exporter
prometheus_monitoring['enable'] = false
grafana['enable'] = false
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值