GitLab CI/CD学习教程(第二章Runner)

GitLab CI/CD学习教程(第二章Runner)


🚀从零开始,结合具体场景和示例,让你彻底掌握 GitLab CI/CD 的配置!

icon


1 原理


⭐ 组件交互流程

GitLab Instance Runner Executor 1. 推送CI作业(通过轮询/Webhook 2. 创建执行环境(Docker/K8s/VM等) 3. 拉取代码并执行脚本 4. 实时返回日志和结果 GitLab Instance Runner Executor

🧾 流程图说明

执行器类型Executor

  • Docker:默认推荐,隔离性高
  • Shell:直接使用宿主机环境,适合简单任务
  • Kubernetes:动态创建 Pod 执行任务
  • VirtualBox/Parallels:虚拟机级别隔离
  • SSH:远程服务器执行
  • 自定义执行器:通过 API 扩展功能


2 安装


📕 参考官方文档

2.1 Windows 系统安装

📔官方文档

  1. 下载 64位或者32位

  2. 在系统中的某个位置创建一个文件夹,例如 .C:\GitLab-Runner

  3. 注册(详情请看3 注册)

  4. 将 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 系统安装

📔官方文档

  1. 添加官方 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
    
  2. 安装最新版本的 GitLab Runner,或跳至下一步 安装特定版本:
    # RHEL/CentOS/Fedora/Amazon Linux
    sudo yum install gitlab-runner
    
    # Debian/Ubuntu/Mint
    sudo apt-get install gitlab-runner
    
  3. 要安装特定版本的 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 注册

📔官方文档

💾 获取TokenURL

获取项目的注册令牌(为该项目指定Runner):

  1. 进入 GitLab 项目 → Settings → CI/CD → Runners → Expand
  2. 复制 注册令牌(Registration Token)
    在这里插入图片描述

获取群组的注册令牌(群组里面的所有项目共享Runner):

  1. 需要群组的权限
  2. 进入 GitLab 群组 → Settings → CI/CD → Runners → Expand*
  3. 复制 注册令牌(Registration Token)URL
    在这里插入图片描述

📥 完整流程 (以Windows为示例)

⏰ 如果你想多个项目共用一个Runner,有两种方案:

  • 注册群组Token, 那群组里面的所有项目均共享
  • 为各个项目分别进行注册,重复该注册流程
  1. 以管理员身份打开 PowerShell:

    cd "D:\GitLab-Runner"
    .\gitlab-runner-windows-amd64.exe register
    
  2. 按提示输入信息:

    关键参数说明:

    • URL: GitLab 实例地址(默认 https://gitlab.com)。
    • Token: 粘贴复制的群组注册令牌或者项目注册令牌
    • Description: 自定义 Runner 名称(如 HULU 测试)。
    • Tags: 输入逗号分隔的标签(如 dev, docker)。
    • Executor: 选择执行器(推荐 docker 或 shell)。在这里插入图片描述
  3. 注册成功后可以在程序的同级目录下看到生成的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运行程序的描述。仅供参考。
urlGitLab 实例的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

解决方案:

  1. 下载并安装 PowerShell Core 安装包,安装后把路径添加到环境变量中。
  2. 使用传统的 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
      



🕛 成功状态:
在这里插入图片描述
可以看到Hello, GitLab Runner! 的打印。


上一篇:《GitLab CI/CD学习教程 第一章概念》
下一篇:《GitLab CI/CD学习教程 第三章Pipeline》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值