GitLab CI/CD 环境搭建及自动提交配置文档

6 阅读8分钟

说明:本文专为小白运维设计,全程避开复杂原理,只讲“怎么做”,所有命令可直接复制执行,步骤清晰可落地。核心目标:搭建GitLab CI/CD环境,实现代码提交后自动触发构建、测试(可选)、部署(可选),无需手动操作。

一、环境准备

1.1 服务器要求

  • 系统:CentOS 7/8 或 Ubuntu 20.04(推荐CentOS 7,命令统一)

  • 内存:≥4G(GitLab运行占内存,2G会卡顿)

  • 硬盘:≥20G(存储代码、构建产物)

  • 网络:服务器能联网(下载GitLab、依赖),开放80、443、22端口

1.2 提前安装的依赖

登录服务器(用Xshell、Putty等工具,账号密码登录),依次执行以下命令,安装必备依赖:


# 1. 更新系统软件(CentOS)

yum update -y

  


# 2. 安装依赖包(CentOS)

yum install -y curl policycoreutils openssh-server openssh-clients postfix

  


# 3. 启动postfix(GitLab发送邮件通知用,可选,小白可跳过)

systemctl start postfix

systemctl enable postfix

  


# 若为Ubuntu系统,替换上面2、3步为:

# apt update -y

# apt install -y curl openssh-server ca-certificates postfix

# systemctl start postfix

# systemctl enable postfix

二、GitLab 服务搭建

GitLab是CI/CD的核心(代码仓库+CI/CD调度),我们搭建社区版(免费,足够小白使用)。

2.1 安装GitLab(CentOS 7为例)


# 1. 添加GitLab官方仓库

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

  


# 2. 安装GitLab社区版(ce=社区版,ee=企业版,收费)

yum install -y gitlab-ce

  


# 3. 初始化GitLab(首次安装必须执行,会设置默认管理员密码)

gitlab-ctl reconfigure

说明:初始化过程可能需要5-10分钟,耐心等待,出现“gitlab Reconfigured!”即为成功。

2.2 配置GitLab

主要配置访问地址和端口,避免端口冲突(默认80端口,若80被占用,需修改)。


# 编辑GitLab配置文件

vim /etc/gitlab/gitlab.rb

  


# 找到以下2行,修改为服务器IP(比如服务器IP是192.168.1.100)

external_url 'http://192.168.1.100' # 访问GitLab的地址,不用加端口(默认80)

gitlab_rails['gitlab_port'] = 80 # 端口,默认80,若被占用(比如nginx),改为8080

  


# 保存退出(vim操作:按ESC,输入:wq,回车)

  


# 重新加载配置(修改配置后必须执行)

gitlab-ctl reconfigure

gitlab-ctl restart

2.3 验证GitLab是否搭建成功

  1. 打开本地浏览器,输入配置的地址:http://服务器IP(比如http://192.168.1.100)

  2. 首次访问会提示设置管理员密码(用户名:root,密码自定义,记住!)

  3. 设置完成后,登录GitLab(root+刚才设置的密码),能看到GitLab首页,即为搭建成功。

提示:若访问不了,检查服务器防火墙是否开放80端口(执行命令:firewall-cmd --permanent --add-port=80/tcp,然后firewall-cmd --reload)。

三、GitLab Runner 安装(自动提交/构建的“执行者”)

GitLab本身不执行构建/提交操作,需要安装GitLab Runner(相当于“工人”),负责接收GitLab的指令,执行自动提交、构建等任务。

3.1 安装GitLab Runner(CentOS 7为例)


# 1. 下载GitLab Runner安装脚本

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

  


# 2. 安装GitLab Runner

yum install -y gitlab-runner

  


# 3. 启动并设置开机自启

systemctl start gitlab-runner

systemctl enable gitlab-runner

  


# 4. 验证Runner是否安装成功

gitlab-runner status

出现“gitlab-runner.service - GitLab Runner”且状态为“active (running)”,即为成功。

3.2 注册Runner(关键:让Runner和GitLab关联)

注册就是告诉Runner:“你要听哪个GitLab的指挥,负责哪个项目的任务”,步骤如下(全程跟着提示走):

步骤1:获取GitLab的注册令牌(从GitLab界面获取)
  1. 登录GitLab(root账号),创建一个测试项目(比如test-cicd,后续用来测试自动提交)。

  2. 进入项目 → 左侧菜单“Settings” → “CI/CD” → 找到“Runners” → 点击“Expand”。

  3. 复制“Registration token”(注册令牌,一串字母+数字,后续要用)。

步骤2:执行注册命令

gitlab-runner register

执行后,会出现5个提示,依次输入以下内容(小白直接照填,括号内为说明):


1. Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):

# 输入GitLab的访问地址,比如 http://192.168.1.100/ (末尾加/)

  


2. Please enter the gitlab-ci token for this runner:

# 粘贴刚才复制的“Registration token”(注册令牌)

  


3. Please enter the gitlab-ci description for this runner:

# 给Runner起个名字,随便填,比如 test-runner

  


4. Please enter the gitlab-ci tags for this runner (comma separated):

# 输入标签(后续CI配置会用到),填 test-tag (直接复制,不用改)

  


5. Please enter the executor: shell, docker+machine, docker-ssh+machine, kubernetes, custom, docker, docker-ssh, parallels, virtualbox, ssh:

# 选择执行器,小白直接输入 shell (回车,最简单,无需额外配置)

提示:出现“Runner registered successfully.”即为注册成功。

步骤3:验证Runner是否关联成功

回到GitLab项目的“CI/CD → Runners”页面,会看到“Active runners”列表中,有刚才注册的Runner(名字、标签和你填的一致),即为关联成功。

四、自动提交配置

自动提交的核心是:在GitLab项目中添加一个名为 .gitlab-ci.yml 的文件,这个文件告诉Runner“代码提交后,要执行什么操作”(比如自动拉取代码、编译、部署等)。

小白简化版:我们配置“代码提交后,自动打印提交信息、拉取最新代码”(后续可扩展为自动部署,这里先实现基础自动提交)。

4.1 新建.gitlab-ci.yml文件(项目中添加)

  1. 登录GitLab,进入刚才创建的test-cicd项目。

  2. 点击项目首页的“+”号 → “New file”。

  3. 文件名填写:.gitlab-ci.yml(必须这个名字,大小写不能错)。

  4. 文件内容复制以下代码(小白不用改,直接复制):

`# 定义 stages(阶段),按顺序执行

stages:

  • pull # 拉取最新代码

  • commit-check # 检查提交信息

第一个任务:拉取最新代码

pull_code:

stage: pull # 关联到pull阶段

tags:

  • test-tag # 必须和Runner的标签一致(之前注册时填的test-tag)

script:

  • echo "开始拉取最新代码..."

  • git pull # 拉取代码(若项目是新创建的,可忽略这行,后续提交后会自动执行)

  • echo "代码拉取完成!"

第二个任务:检查提交信息

check_commit:

stage: commit-check # 关联到commit-check阶段

tags:

  • test-tag

script:

  • echo "当前提交的分支:$CI_COMMIT_BRANCH"

  • echo "当前提交的作者:$CI_COMMIT_AUTHOR"

  • echo "当前提交的信息:$CI_COMMIT_MESSAGE"

  • echo "自动提交验证成功!"`

  1. 点击页面底部的“Commit changes”(提交文件),填写提交信息(比如“添加CI/CD配置文件”),再点击“Commit changes”。

4.2 配置自动触发条件

默认情况下,只要代码提交(git push)到项目的任何分支,就会自动触发CI/CD任务(执行.gitlab-ci.yml里的脚本)。

若想修改触发条件(比如只在main分支提交时触发),可在.gitlab-ci.yml文件中添加:


only:

- main # 只有提交到main分支,才触发自动任务

五、测试自动提交

我们通过“本地提交代码到GitLab项目”,测试CI/CD是否自动执行。

5.1 本地准备


# 1. 本地安装Git(Windows/Mac,自行下载安装,很简单)

# 2. 克隆GitLab项目到本地(复制项目的SSH地址)

git clone http://192.168.1.100/root/test-cicd.git # 替换为你的GitLab项目地址

  


# 3. 进入项目目录

cd test-cicd

  


# 4. 新建一个测试文件,模拟代码提交

echo "test ci/cd auto commit" > test.txt

  


# 5. 提交代码到GitLab

git add test.txt

git commit -m "测试自动提交,添加test.txt文件"

git push origin main # 推送到main分支

5.2 查看自动任务执行结果(GitLab界面)

  1. 登录GitLab,进入test-cicd项目。

  2. 点击顶部菜单“CI/CD” → “Pipelines”(流水线)。

  3. 会看到一条新的流水线(状态为“Running”或“Success”),点击流水线的ID(比如#1)。

  4. 进入后,能看到两个任务(pull_code、check_commit),若两个任务都显示“passed”(绿色对勾),说明自动提交成功!

  5. 点击每个任务,可查看执行日志(比如打印的提交信息、拉取代码的过程)。

提示:若任务显示“failed”(红色叉号),点击任务查看日志,大部分是权限问题(比如Runner没有项目权限),可重新注册Runner,或检查标签是否一致。

六、小白常见问题(必看,避坑)

问题1:GitLab访问不了

解决:① 检查服务器IP是否正确;② 检查防火墙是否开放80端口(执行firewall-cmd --permanent --add-port=80/tcp,然后firewall-cmd --reload);③ 重启GitLab(gitlab-ctl restart)。

问题2:Runner注册失败,提示“connection refused”

解决:GitLab的访问地址填写错误,比如少加了末尾的“/”,或IP错误,重新执行gitlab-runner register,正确填写GitLab地址。

问题3:流水线任务失败,提示“git: command not found”

解决:服务器没有安装Git,执行yum install -y git(CentOS)或apt install -y git(Ubuntu),安装后重启Runner(systemctl restart gitlab-runner)。

问题4:提交代码后,没有触发流水线

解决:① 检查.gitlab-ci.yml文件名是否正确(必须是这个名字,大小写不能错);② 检查Runner的标签和配置文件中的tags一致;③ 检查项目“CI/CD → Runners”中,Runner是否为“Active”状态。

七、总结

小白运维搭建GitLab CI/CD核心3步:① 搭建GitLab服务;② 安装并注册GitLab Runner;③ 项目中添加.gitlab-ci.yml配置文件。