温馨提示×

gitlab linux怎样集成ci

小樊
57
2026-10-16 04:38:28
栏目: 智能运维

在 Linux 上部署的 GitLab 中集成 CI/CD,核心是使用 GitLab Runner + .gitlab-ci.yml。下面按“从零到可用”的步骤说明。


一、整体原理(简单理解)

  1. GitLab:存放代码,触发 CI
  2. GitLab Runner:真正执行 CI 任务的机器(Linux 服务器)
  3. .gitlab-ci.yml:定义 CI 流程(构建、测试、部署)

二、安装 GitLab Runner(Linux)

1. 添加 GitLab 官方仓库

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

Debian/Ubuntu 用 script.deb.sh

2. 安装 Runner

# CentOS / RHEL
sudo yum install gitlab-runner -y

# Ubuntu / Debian
sudo apt install gitlab-runner -y

三、注册 Runner 到 GitLab

1. 获取注册信息

在 GitLab 项目中:

Settings → CI/CD → Runners

复制:

  • GitLab URL
  • Registration Token

2. 注册 Runner

sudo gitlab-runner register

按提示输入:

  • GitLab URL
  • Token
  • Runner 名称
  • 执行方式(推荐 shell 或 docker)
  • 默认镜像(docker 时才需要)

✅ 示例(shell 方式):

Executor: shell

四、编写 CI 配置文件(核心)

在项目根目录创建:

vi .gitlab-ci.yml

最简示例(Linux shell)

stages:
  - build
  - test

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

test_job:
  stage: test
  script:
    - echo "Testing..."
    - ./run_tests.sh

提交代码即触发 CI:

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

五、Runner 执行方式选择

✅ Shell(最简单)

  • 直接在 Linux 上执行
  • 需手动装好依赖(JDK、Node、Python 等)

✅ Docker(推荐)

build:
  image: maven:3.8
  script:
    - mvn package

注册时:

Executor: docker

六、常见 CI 场景示例

Java 项目

build:
  image: maven:3.8
  script:
    - mvn clean package

Node 项目

build:
  image: node:18
  script:
    - npm install
    - npm run build

部署到 Linux 服务器

deploy:
  stage: deploy
  script:
    - scp target/app.jar user@server:/opt/app/
    - ssh user@server "systemctl restart app"

七、查看 CI 结果

项目 → CI/CD → Pipelines

可看到:

  • 执行日志
  • 成功 / 失败
  • 耗时

八、常见问题

Runner 不触发?

  • Runner 是否 active
  • 是否匹配 tags
  • .gitlab-ci.yml 是否语法正确

权限问题?

sudo usermod -aG docker gitlab-runner
sudo reboot

九、总结

GitLab CI 集成 Linux 的步骤:

  1. 安装 GitLab Runner
  2. 注册到 GitLab
  3. 写 .gitlab-ci.yml
  4. push 代码自动触发

如果你愿意,我可以:

  • 帮你写 具体语言(Java/Go/Python)的 CI
  • 配置 Docker / Kubernetes Runner
  • 做 自动化部署到 Linux 服务器

直接告诉我你的项目类型即可。

0 踩