基于Linux环境构建CI/CD:GitLab社区版部署全流程指南

一、环境准备与虚拟机克隆

在构建CI/CD基础设施前,需确保已具备可用的Linux虚拟机环境。推荐采用克隆方式快速创建标准化开发环境:

  1. 基础镜像选择:建议使用CentOS Stream或RHEL系衍生版本,确保与主流开发工具链兼容
  2. 克隆操作流程
    • 通过虚拟机管理界面执行完整克隆
    • 修改新实例主机名(hostnamectl set-hostname gitlab-server
    • 更新系统至最新状态(dnf update -y

二、静态网络配置

生产环境建议采用静态IP配置以确保服务稳定性,具体操作如下:

  1. # 使用nmcli工具配置网络(以ens33网卡为例)
  2. nmcli connection modify "ens33" \
  3. ipv4.addresses "192.168.226.100/24" \
  4. ipv4.gateway "192.168.226.2" \
  5. ipv4.dns "8.8.8.8,114.114.114.114" \
  6. ipv4.method manual
  7. # 重启网络服务生效
  8. nmcli connection down "ens33" && nmcli connection up "ens33"
  9. # 验证配置
  10. ip addr show ens33 | grep inet
  11. ping -c 4 baidu.com

关键参数说明

  • ipv4.addresses:需与后续GitLab配置的EXTERNAL_URL保持一致
  • DNS配置建议采用公共DNS服务提升解析效率
  • 网关地址需与物理网络拓扑匹配

三、GitLab依赖安装

社区版安装需预先准备基础工具和安全组件:

  1. # 安装基础依赖
  2. dnf install -y curl policycoreutils-python-utils
  3. # 配置SELinux策略(解决端口访问问题)
  4. setsebool -P httpd_can_network_connect 1

组件作用解析

  • curl:用于下载官方仓库配置脚本
  • policycoreutils-python-utils:提供SELinux策略管理工具
  • SELinux配置:允许Web服务访问网络端口(80/443)

四、仓库源配置与安装

由于官方仓库可能存在版本兼容性问题,需特别注意版本选择:

  1. # 添加CentOS 8兼容仓库(适用于Stream 10)
  2. curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | \
  3. os=el dist=8 bash
  4. # 安装社区版(断点续传支持)
  5. EXTERNAL_URL="http://192.168.226.100" yum install -y gitlab-ce

版本选择建议

  • 企业环境推荐使用LTS版本
  • 测试环境可选择最新稳定版
  • 安装过程中若遇到libxcrypt-compat缺失错误,执行:
    1. dnf install -y libxcrypt-compat

五、服务配置与启动

安装完成后需执行初始化配置:

  1. # 重新加载配置并启动服务
  2. gitlab-ctl reconfigure
  3. # 检查服务状态(正常应显示green状态)
  4. gitlab-ctl status
  5. # 查看初始化密码(24小时内有效)
  6. cat /etc/gitlab/initial_root_password

服务依赖说明
GitLab运行需要以下核心组件协同工作:

  • PostgreSQL:默认端口5432
  • Redis:默认端口6379
  • Nginx:默认端口80/443
  • Sidekiq:后台任务处理

六、防火墙配置

开放必要端口确保外部访问:

  1. # 查看当前规则
  2. firewall-cmd --list-all
  3. # 添加HTTP服务(永久生效)
  4. firewall-cmd --permanent --add-service=http
  5. firewall-cmd --permanent --add-service=https
  6. # 重新加载规则
  7. firewall-cmd --reload

安全建议

  • 生产环境建议配置HTTPS
  • 可通过--add-port=2222/tcp开放SSH端口(需修改GitLab配置)
  • 使用firewall-cmd --list-ports验证配置

七、基础使用指南

完成部署后,建议按以下流程进行初始化配置:

1. 首次登录

访问http://<服务器IP>,使用初始密码登录后立即修改:

  • 推荐使用强密码策略(12位以上包含大小写字母和数字)
  • 建议绑定邮箱用于密码找回

2. 组织架构设计

专业实践建议

  • 按业务部门创建顶级Group(如/engineering
  • 在Group下创建Project(如/engineering/web-app
  • 通过Member模块配置细粒度权限(Maintainer/Developer/Reporter)

3. 项目初始化

  1. # 本地Git配置示例
  2. git config --global user.name "Your Name"
  3. git config --global user.email "your.email@example.com"
  4. # 克隆远程仓库
  5. git clone http://192.168.226.100/engineering/web-app.git

版本控制规范

  • 主分支命名建议采用mainmaster
  • 开发分支使用feature/xxx格式
  • 版本发布分支使用release/v1.0格式

八、性能优化建议

针对资源占用问题,可采取以下措施:

  1. 内存优化

    • 修改/etc/gitlab/gitlab.rb中的unicorn['worker_processes']
    • 调整PostgreSQL共享缓冲区(postgresql['shared_buffers']
  2. 存储优化

    • 将Git仓库存储迁移至独立磁盘
    • 配置对象存储作为LFS大文件存储后端
  3. 监控集成

    • 通过Prometheus收集关键指标
    • 配置Grafana看板监控响应时间
    • 设置告警规则(如磁盘空间、内存使用率)

九、常见问题处理

初始化卡在502错误

  • 检查gitlab-ctl status确认所有服务已启动
  • 查看日志定位问题:
    1. journalctl -u gitlab-runsvdir -f
    2. gitlab-ctl tail

邮件发送失败

  • 配置SMTP参数(/etc/gitlab/gitlab.rb
  • 测试邮件发送:
    1. gitlab-rails console
    2. Notify.test_email('recipient@example.com', 'Test Subject', 'Test Body').deliver_now

备份恢复策略

  • 每日自动备份配置:
    1. gitlab-rake gitlab:backup:create
  • 跨版本恢复需验证兼容性
  • 建议将备份文件存储至对象存储服务

通过完成上述部署流程,您已成功搭建起企业级代码托管平台。此环境可作为后续CI/CD流水线建设的核心组件,与Jenkins/GitLab CI等工具集成后,可实现从代码提交到生产部署的全自动化流程。建议定期进行安全更新(dnf update gitlab-ce)并关注官方版本发布动态,确保系统持续获得安全补丁和功能更新。