GitLab CI/CD 实战:一键推送自动同步 Gitee 全流程

大家好,我是浮生若梦

在前面的 GitLab 系列文章中,我们已经完成了私有化 GitLab 服务器的搭建以及 Runner 的注册。今天这期教程将进入自动部署的第一阶段——配置 GitLab CI/CD 流水线,实现代码从 GitLab 推送后自动同步到 Gitee(码云)远程仓库,为后续的生产环境自动化部署打下基础。

整个流程的最终效果是:你在本地发送一条提交指令,代码推送到 GitLab 后,流水线自动触发,将代码同步到 Gitee——全程零手动操作

前置准备

在开始之前,请确保你已经完成以下准备工作:

  • ✅ 私有 GitLab 服务器已搭建并可正常访问(参考本站第一篇 GitLab 文章)
  • ✅ GitLab Runner 已注册并处于在线状态(参考本站第二篇 GitLab 文章)
  • ✅ Gitee(码云)账号已注册,并创建了一个目标远程仓库
  • ✅ 本地 Windows 开发环境已安装 Git

第一步:在 Gitee 上创建远程仓库

首先我们需要在 Gitee 上创建一个仓库,作为代码同步的目标地址。

  1. 登录 Gitee,点击右上角 "+""新建仓库"
  2. 填写仓库名称(建议与 GitLab 项目名保持一致)
  3. 选择 "私有""公开",根据你的需求决定
  4. 创建完成后,复制仓库的 SSH 地址(格式如 git@gitee.com:xxx/xxx.git)备用
⚠️ 这里务必复制 SSH 地址而非 HTTPS 地址,后续 CI/CD 流水线需要通过 SSH 方式免密推送。

第二步:配置 Gitee 的 SSH 公钥

和 GitLab 一样,Gitee 也需要配置 SSH 公钥才能实现免密访问。这里有个关键点:我们要配置的是 GitLab Runner 所在机器的公钥,而不是你本地开发机的公钥。

因为 CI/CD 流水线是由 Runner 执行的,所以 Runner 所在的机器需要有权限向 Gitee 推送代码。

  1. 登录到 Runner 所在的服务器,查看或生成 SSH 密钥对:
    # 查看是否已有密钥
    ls ~/.ssh/
    
    # 如果没有,生成新的密钥对
    ssh-keygen -t ed25519 -C "runner@gitlab"
  2. 复制公钥内容:
    cat ~/.ssh/id_ed25519.pub
  3. 打开 Gitee → "设置""SSH公钥",将公钥粘贴并保存

第三步:配置 GitLab 上的 SSH 公钥

同理,本地开发环境需要能够拉取 GitLab 上的代码。我们需要把本机 Windows 的 SSH 公钥配置到 GitLab 上。

  1. 打开本机的公钥文件,位置在:
    C:\Users\你的用户名\.ssh\id_ed25519.pub
  2. 复制公钥内容
  3. 进入 GitLab → 点击头像 → "偏好设置""SSH 密钥"
  4. 将公钥粘贴到输入框,建议把到期时间去掉(设置为从不过期)
  5. 点击 "添加密钥" 保存

配置 SSH Config 文件

如果你的 GitLab 服务使用了非标准端口(如 2200),还需要在本机配置 SSH Config 文件来指定端口和私钥位置:

# 文件位置:C:\Users\你的用户名\.ssh\config

Host gitlab.yourserver.com
    HostName gitlab.yourserver.com
    Port 2200
    User git
    IdentityFile ~/.ssh/id_ed25519
    PreferredAuthentications publickey

加上这几行配置后,Git 就能通过指定端口和私钥来访问你的私有 GitLab 了。

第四步:拉取 GitLab 项目到本地

公钥和 Config 都配置好之后,我们就可以把 GitLab 上的项目拉取到本地了:

  1. 创建一个本地目录作为工作区
  2. 使用 IDE(如 Trine / VS Code)打开该目录
  3. 通过 AI 助手或手动执行 git clone 拉取仓库代码

拉取成功后,你会看到仓库中的文件(如 README.md)已经出现在本地目录中。

第五步:创建 .gitlab-ci.yml 配置文件

这是整个自动化部署的核心文件。在项目根目录创建 .gitlab-ci.yml 文件,CI/CD 流水线将根据这个文件的配置来执行自动化任务。

配置文件要点解析

以下是配置文件中需要特别注意的几个关键点:

1. Runner Tags(标签匹配)

配置文件中的 tags 字段决定了哪个 Runner 来执行任务。标签必须与你注册 Runner 时设置的标签一致。

你可以在 GitLab 的 "管理中心""Runner" 页面查看已注册 Runner 的标签(如 windowssharedisplay 等)。

2. 分支触发条件

only:
  - master
  - main

这段配置表示只有 master 或 main 分支的推送才会触发流水线。也就是说,你在开发分支上提交代码不会触发自动同步,只有合并到主分支时才会执行——这样可以避免频繁的无效推送。

3. Gitee 仓库地址

配置文件中有一处需要替换为你自己的 Gitee 仓库 SSH 地址(就是我们在第一步中复制的那个地址)。

⚠️ 注意:配置文件中引用了变量名,如果你修改了变量名,记得在引用处同步修改,否则推送会失败。

第六步:提交并触发流水线

配置文件创建完成后,我们只需要执行一次 Git 提交和推送:

  1. .gitlab-ci.yml 文件添加到暂存区
  2. 提交并推送到 GitLab 的 master/main 分支
  3. GitLab 自动检测到配置文件,触发 CI/CD 流水线

查看流水线执行状态

进入 GitLab 项目页面 → "CI/CD""流水线",可以看到流水线的执行状态:

  • 🟢 已通过 — 流水线执行成功,代码已自动同步到 Gitee
  • 🔴 已失败 — 检查日志排查错误(常见问题:SSH 公钥未配置、地址错误、Runner 离线等)

流水线通过后,打开 Gitee 仓库刷新页面,你会发现 GitLab 上的代码文件已经完整地同步过来了。

最终效果

至此,我们已经完成了自动部署的第一阶段任务

  • ✅ 本地提交代码 → GitLab 接收推送
  • ✅ GitLab CI/CD 流水线自动触发
  • ✅ 代码自动同步到 Gitee 远程仓库
  • ✅ 仅 master/main 分支触发,开发分支不受影响

后续站长还会继续讲解如何从 Gitee 线上仓库实现生产环境的代码自动更新,最终达到的效果是:在本地发送一条提示词指令,完成一次推送后,线上直接同步部署——不需要任何手动操作,每天只需要敲敲提示词更新代码就可以了。

想要达到这个效果,就需要跟着本系列教程一步步配置。所有操作指令和配置文件都可以在求知栈公众号获取,结合视频教程一起操作,新手也能轻松搞定!

📦 资源获取:GitLab CI/CD 配置文件与操作指令

包含完整的 .gitlab-ci.yml 配置模板、SSH Config 配置示例以及分步操作指令:

求知栈公众号二维码

关注【求知栈】服务号,私信回复下方关键字马上提取:

qzz011