温馨提示×

如何在CentOS上部署GitLab CI

小樊
42
2025-12-09 13:40:26
栏目: 智能运维

在 CentOS 上部署 GitLab CI 的两种常见方式

  • 方式一:部署一体化的 GitLab CE(自带 CI/CD 能力,Runner 可安装在同机或他机)。
  • 方式二:已有 GitLab 实例,仅在 CentOS 上安装 GitLab Runner 来承接 CI/CD 作业。

方式一 一体化部署 GitLab CE 并启用 CI/CD

  • 准备与依赖
    • 更新系统并安装常用依赖,启用 SSH邮件 与防火墙放行 HTTP/HTTPS
      • sudo yum update -y
      • sudo yum install -y curl policycoreutils-python openssh-server postfix
      • sudo systemctl enable --now sshd
      • sudo systemctl enable --now postfix
      • sudo firewall-cmd --permanent --add-service=http --add-service=https
      • sudo firewall-cmd --reload
  • 安装与配置 GitLab CE
    • 添加官方仓库并安装,设置外部访问地址后执行 reconfigure:
      • curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
      • sudo EXTERNAL_URL=“http://your-domain-or-ip” yum install -y gitlab-ce
      • sudo gitlab-ctl reconfigure
  • 创建 CI 流水线
    • 在任意项目根目录新增 .gitlab-ci.yml,提交并推送后,GitLab 会自动创建并运行流水线,可在项目 CI/CD → Pipelines 查看状态与日志。

方式二 在 CentOS 上仅部署 GitLab Runner

  • 安装 Runner(RHEL/CentOS 推荐使用官方仓库的 rpm 包)
    • curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
    • sudo yum install -y gitlab-runner
  • 注册 Runner
    • 获取注册令牌:项目级路径为 Settings → CI/CD → Runners;实例级路径为 Admin Area → Runners
    • 交互式注册:sudo gitlab-runner register,按提示填写 GitLab 实例 URLRegistration token描述标签执行器(如 shelldocker)。
    • 非交互式注册示例(Docker 执行器,使用本机 Docker 套接字):
      • sudo gitlab-runner register --non-interactive
        –executor “docker”
        –docker-image “alpine:latest”
        –url “http://your-gitlab-domain-or-ip”
        –registration-token “YOUR_TOKEN”
        –description “docker-runner”
        –tag-list “docker,centos”
        –run-untagged “true”
        –locked “false”
        –docker-volumes /var/run/docker.sock:/var/run/docker.sock
        –docker-privileged “true”
  • 启动与验证
    • sudo gitlab-runner start
    • 在 GitLab 的 Runners 页面确认 Runner 状态为 online,并带有你设置的标签。

编写与触发 .gitlab-ci.yml 示例

  • 示例(使用 Docker 执行器时,image 指定默认镜像;services 可启动依赖服务):
    • stages:
      • build
      • test
      • deploy
    • build: stage: build image: node:14 script:
      • npm ci
      • npm run build --if-present artifacts: paths:
        • dist/
    • test: stage: test image: node:14 script:
      • npm test – --ci
    • deploy: stage: deploy script:
      • echo “Deploying…” only:
      • main
  • 将文件置于项目根目录,执行 git add/commit/push,触发流水线。

常见问题与优化建议

  • Runner 无法连接 GitLab
    • 核对 URLRegistration token;确保服务器可达;如使用自签名证书,Runner 需配置信任(例如在 /etc/gitlab-runner/config.toml 的 [[runners]] 下设置 clone_url 与适当的 TLS 配置)。
  • 使用 Docker 执行器的权限与性能
    • 挂载 /var/run/docker.sock 可直接复用宿主机 Docker,便于构建镜像;必要时开启 –docker-privileged,但应评估安全风险并尽量使用更细粒度的权限与镜像。
  • 防火墙与端口
    • 确保 22/80/443 放行;如使用 HTTPS,配置有效的证书并重启服务使配置生效。
  • Runner 并发与标签
    • 通过 –tag-list 为 Runner 打标签,在 .gitlab-ci.yml 中使用 tags 精确匹配;必要时调整并发与超时,提升吞吐与稳定性。

0