GitLab CI/CD学习教程(第二章Runner)
🚀从零开始,结合具体场景和示例,让你彻底掌握 GitLab CI/CD 的配置!

目录
1 原理
⭐ 组件交互流程
🧾 流程图说明
执行器类型Executor:
- Docker:默认推荐,隔离性高
- Shell:直接使用宿主机环境,适合简单任务
- Kubernetes:动态创建 Pod 执行任务
- VirtualBox/Parallels:虚拟机级别隔离
- SSH:远程服务器执行
- 自定义执行器:通过 API 扩展功能
2 安装
📕 参考官方文档
2.1 Windows 系统安装
-
在系统中的某个位置创建一个文件夹,例如 .
C:\GitLab-Runner
-
注册(详情请看3 注册)
-
将 GitLab Runner 安装为服务并启动它。您可以运行
Service
使用内置系统帐户 (推荐) 或使用用户帐户:- 使用内置系统帐户运行服务 (在步骤2中创建的示例目录下,C:\GitLab-Runner)
cd C:\GitLab-Runner .\gitlab-runner.exe install .\gitlab-runner.exe start
- 使用用户账户运行服务 (在步骤2中创建的示例目录下,C:\GitLab-Runner)
您必须为当前用户帐户输入有效的密码,因为 需要通过 Windows 启动服务:
cd C:\GitLab-Runner .\gitlab-runner.exe install --user ENTER-YOUR-USERNAME --password ENTER-YOUR-PASSWORD .\gitlab-runner.exe start
2.2 Linux 系统安装
- 添加官方 GitLab 仓库:
# RHEL/CentOS/Fedora/Amazon Linux curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash # Debian/Ubuntu/Mint curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash # 源码编译安装(自定义功能) go get -u gitlab.com/gitlab-org/gitlab-runner cd $GOPATH/src/gitlab.com/gitlab-org/gitlab-runner make deps && make
- 安装最新版本的 GitLab Runner,或跳至下一步 安装特定版本:
# RHEL/CentOS/Fedora/Amazon Linux sudo yum install gitlab-runner # Debian/Ubuntu/Mint sudo apt-get install gitlab-runner
- 要安装特定版本的 GitLab Runner:
# RHEL/CentOS/Fedora/Amazon Linux yum list gitlab-runner --showduplicates | sort -r sudo yum install gitlab-runner-17.2.0-1 # Debian/Ubuntu/Mint apt-cache madison gitlab-runner sudo apt install gitlab-runner=17.7.1-1 gitlab-runner-helper-images=17.7.1-1
2.3 Docker 安装
自行参阅:📔官方文档
3 注册
💾 获取Token
和URL
:
获取项目的注册令牌(为该项目指定Runner
):
- 进入 GitLab 项目 → Settings → CI/CD → Runners → Expand
- 复制
注册令牌
(Registration Token)
获取群组的注册令牌(群组里面的所有项目共享Runner
):
- 需要群组的权限
- 进入 GitLab 群组 → Settings → CI/CD → Runners → Expand*
- 复制
注册令牌
(Registration Token) 和URL
📥 完整流程 (以Windows为示例):
⏰ 如果你想多个项目共用一个
Runner
,有两种方案:
- 注册群组
Token
, 那群组里面的所有项目均共享- 为各个项目分别进行注册,重复该注册流程
-
以管理员身份打开 PowerShell:
cd "D:\GitLab-Runner" .\gitlab-runner-windows-amd64.exe register
-
按提示输入信息:
关键参数说明:
- URL: GitLab 实例地址(默认
https://gitlab.com
)。 - Token: 粘贴复制的
群组注册令牌
或者项目注册令牌
。 - Description: 自定义 Runner 名称(如
HULU 测试
)。 - Tags: 输入逗号分隔的标签(如 dev, docker)。
- Executor: 选择执行器(推荐 docker 或
shell
)。
- URL: GitLab 实例地址(默认
-
注册成功后可以在程序的同级目录下看到生成的
config.toml
文件
文件内容如下:concurrent = 1 check_interval = 0 shutdown_timeout = 0 [session_server] session_timeout = 1800 [[runners]] name = "HULU 测试" url = "http://gitlab.com/" id = 106 token = "xxxxxxxxxxx" token_obtained_at = 2025-03-06T10:13:30Z token_expires_at = 0001-01-01T00:00:00Z executor = "shell" shell = "pwsh" [runners.cache] MaxUploadedArchiveSize = 0 [runners.cache.s3] [runners.cache.gcs] [runners.cache.azure]
4 配置
📔《高级配置》官方文档
如果您是第一次了解Runner
,可以忽略该步骤,先看完5 运行步骤再回头看该步骤。
以后可能会单独写一个文章专门讲解高级配置。
🧾 常用全局
配置项详解
项目 | 含义 |
---|---|
concurrent | 最大并发作业数(根据服务器性能调整, 如果4核CPU可设置4) |
check_interval | 轮询新作业的间隔(秒) |
log_level | 日志级别 (“debug” / “info” / “warn” / “error”) |
🧾 常用[runners]
配置项详解
项目 | 含义 |
---|---|
name | 运行程序的描述。仅供参考。 |
url | GitLab 实例的URL(如果你是私有的gitlab) |
token | 运行器的身份验证令牌,在运行器注册期间自动获取。与注册令牌不同。 |
environment | 附加或覆盖环境变量。 |
executor | 运行程序用于运行 CI/CD 作业的主机作系统上的环境或命令处理器。有关更多信息,请参阅 executors |
shell | 用于生成脚本的 shell 的名称。默认值取决于平台。 |
clone_url | 覆盖GitLab 实例的 URL。仅当 runner 无法连接到 GitLab URL 时使用。 |
📄 示例
# Example `config.toml` file
concurrent = 20
check_interval = 0
connection_max_age = "15m0s"
shutdown_timeout = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "某个项目"
url = "http://git.xxx.com/"
id = 55
token = "PsEvWbVLP7nwqfiiBogH"
token_obtained_at = 2025-01-07T03:43:45Z
token_expires_at = 0001-01-01T00:00:00Z
executor = "shell"
shell = "pwsh"
[runners.custom_build_dir]
[runners.cache]
MaxUploadedArchiveSize = 0
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[[runners]]
name = "群组"
url = "http://git.xxxx.com/"
id = 58
token = "BB8mSQ2TyZrxSGkDASgy"
token_obtained_at = 2025-01-15T08:30:48Z
token_expires_at = 0001-01-01T00:00:00Z
executor = "shell"
shell = "powershell"
[runners.custom_build_dir]
[runners.cache]
MaxUploadedArchiveSize = 0
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
5 运行
5.1 Windows 系统运行
🎈 启动服务
.\gitlab-runner-windows-amd64.exe install
Runtime platform arch=amd64 os=windows pid=13172 revision=c4cbe9dd version=17.9.0
.\gitlab-runner-windows-amd64.exe start
Runtime platform arch=amd64 os=windows pid=13172 revision=c4cbe9dd version=17.9.0
❓ 验证状态
.\gitlab-runner-windows-amd64.exe status
Runtime platform rch=amd64 os=windows pid=34096 revision=c4cbe9dd version=17.9.0
gitlab-runner: Service is running
若出现Service is running
说明运行成功!
5.2 Linux 系统运行
🎈 启动服务
使用 systemctl 启动 GitLab Runner 并设置为开机自启动:
sudo systemctl enable gitlab-runner
sudo systemctl start gitlab-runner
❓ 验证状态
sudo systemctl status gitlab-runner
如果 GitLab Runner 正常运行,你应该会看到类似下面的输出:
● gitlab-runner.service - GitLab Runner
Loaded: loaded (/etc/systemd/system/gitlab-runner.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2025-03-10 14:21:05 UTC; 3min ago
Docs: https://docs.gitlab.com/runner/
Main PID: 1234 (gitlab-runner)
Tasks: 6 (limit: 4915)
Memory: 35.4M
CGroup: /system.slice/gitlab-runner.service
└─1234 /usr/bin/gitlab-runner run
📃 查看注册列表
确认 Runner 已正确注册到 GitLab 实例:
Linux:
sudo gitlab-runner list
Windows:
.\gitlab-runner-windows-amd64.exe list
输出示例:
Listing configured runners ConfigFile=G:\project\GitLab-Runner\config.toml
HULU 测试 Executor=shell Token=dW68GD9n9w-gwkHTXCnS URL=http://git.gudsen-rd.com/
HULU 群组 Executor=shell Token=3_ZjysZJkDc51spUD96c URL=http://git.gudsen-rd.com/
6 实地演示
6.1 添加CI/CD文件
为了验证 GitLab Runner 是否正常工作,你可以通过 GitLab 提交一个简单的 CI 作业来进行测试。首先,确保在项目的根目录下有一个 .gitlab-ci.yml
文件。如果没有,可以创建一个最简单的 CI 配置:
stages:
- test
test_job:
stage: test
script:
- echo "Hello, GitLab Runner!"
将此文件提交到 GitLab 项目中,GitLab 会自动触发 CI 任务,GitLab Runner 会执行该任务并输出相关信息。
6.2 查看CI/CD状态
可以在 GitLab 项目的 CI / CD ——> Pipelines
页面查看任务状态。(这里演示三种状态)
🕛 阻塞状态:
原因分析:
这是由于没有对Runner注册该项目或者该群组导致的,参考步骤 3 注册即可。
🕛 失败状态:
原因分析:
环境变量里面没有检测到pwsh。
解决方案:
- 下载并安装
PowerShell Core
安装包,安装后把路径添加到环境变量中。 - 使用传统的
Windows PowerShell(powershell.exe)
来执行 CI/CD 任务。- 打开 GitLab Runner 的配置文件
config.toml
(通常位于 C:\GitLab-Runner\config.toml)。 - 在配置文件中找到类似以下的内容:
[runners] executor = "shell" shell = "pwsh" # 这里指定的是 pwsh
- 将 shell 的值从
pwsh
改为powershell
,这样 GitLab Runner 将使用 Windows 自带的 PowerShell:[runners] executor = "shell" shell = "powershell" # 修改为 powershell
- 保存并关闭
config.toml
文件 - 重新启动 GitLab Runner 服务:
gitlab-runner restart
- 打开 GitLab Runner 的配置文件
🕛 成功状态:
可以看到Hello, GitLab Runner! 的打印。
上一篇:《GitLab CI/CD学习教程 第一章概念》
下一篇:《GitLab CI/CD学习教程 第三章Pipeline》