温馨提示×

centos gitlab如何集成ci

小樊
39
2026-09-15 00:04:52
栏目: 智能运维

CentOS 上部署的 GitLab 中集成 CI(GitLab CI/CD),通常有以下几种常见方式和完整步骤。下面按“最常用、最标准”的方式讲。


一、GitLab CI 基本原理

GitLab 本身自带 CI/CD 引擎,你只需要:

  1. 在项目中添加 .gitlab-ci.yml
  2. 准备 GitLab Runner
  3. Runner 注册到 GitLab
  4. 提交代码 → 自动触发 Pipeline

二、环境准备(CentOS)

假设:

  • GitLab 已安装在 CentOS(omnibus 或 Docker)
  • 系统:CentOS 7 / 8

三、安装 GitLab Runner(CentOS)

1. 添加 GitLab Runner 源

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash

2. 安装 Runner

yum install gitlab-runner -y

安装完成后:

gitlab-runner --version

四、注册 GitLab Runner

1. 获取注册信息

进入 GitLab:

Project → Settings → CI/CD → Runners

你会看到:

  • Runner URL
  • Registration Token

2. 注册 Runner

sudo gitlab-runner register

按提示输入:

URL: https://gitlab.example.com/
Token: xxxxxx
Description: centos-runner
Tags: centos, shell
Executor: shell

常用 Executor:

  • shell(最简单,CentOS 本机执行)
  • docker(推荐,隔离性好)

五、启动 Runner

sudo gitlab-runner start

查看状态:

sudo gitlab-runner status

在 GitLab 页面能看到 Runner 已在线。


六、编写 .gitlab-ci.yml

在项目根目录创建:

stages:
  - build
  - test
  - deploy

build_job:
  stage: build
  script:
    - echo "Building..."
    - make build

test_job:
  stage: test
  script:
    - echo "Testing..."
    - make test

deploy_job:
  stage: deploy
  script:
    - echo "Deploying..."
    - sh deploy.sh
  only:
    - main

提交后:

git add .gitlab-ci.yml
git commit -m "add ci"
git push

七、CentOS 上常见问题

1. shell 执行权限问题

Runner 默认用户是 gitlab-runner

usermod -aG wheel gitlab-runner

或:

visudo
gitlab-runner ALL=(ALL) NOPASSWD:ALL

2. 使用 Docker Executor(推荐)

yum install docker -y
systemctl start docker

注册时:

Executor: docker
Default image: centos:7

八、GitLab CI 与 CentOS 部署示例

自动部署到 CentOS 服务器

deploy:
  stage: deploy
  script:
    - scp app.jar root@192.168.1.10:/opt/app/
    - ssh root@192.168.1.10 "systemctl restart app"

九、推荐结构

project/
├── .gitlab-ci.yml
├── Dockerfile
├── deploy.sh
└── src/

如果你愿意,可以告诉我:

  • ✅ GitLab 是 omnibus / Docker / Kubernetes
  • ✅ 项目类型(Java / Node / Python / Go)
  • ✅ 是否要 自动部署到 CentOS

我可以直接给你一套 可用 CI 配置模板

0