在 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 实例 URL、Registration token、描述、标签 与 执行器(如 shell 或 docker)。
- 非交互式注册示例(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:
stage: build
image: node:14
script:
- npm ci
- npm run build --if-present
artifacts:
paths:
- test:
stage: test
image: node:14
script:
- deploy:
stage: deploy
script:
- echo “Deploying…”
only:
- main
- 将文件置于项目根目录,执行 git add/commit/push,触发流水线。
常见问题与优化建议
- Runner 无法连接 GitLab
- 核对 URL 与 Registration 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 精确匹配;必要时调整并发与超时,提升吞吐与稳定性。