目录
[一、gitlab-runner 简介](#一、gitlab-runner 简介)
[1.1 要求](#1.1 要求)
[1.2 特点](#1.2 特点)
[二、GitLab Runner 安装](#二、GitLab Runner 安装)
[2.1 使用 GItLab 官方仓库安装](#2.1 使用 GItLab 官方仓库安装)
[2.2 使用 deb/rpm 软件包](#2.2 使用 deb/rpm 软件包)
[2.3 在容器中运行 GitLab Runner](#2.3 在容器中运行 GitLab Runner)
[三、GitLab Runner 注册](#三、GitLab Runner 注册)
[3.1 GitLabRunner 类型](#3.1 GitLabRunner 类型)
[3.2 获取 runner token](#3.2 获取 runner token)
[获取 shared 类型 runner token](#获取 shared 类型 runner token)
[获取 group 类型的 runner token](#获取 group 类型的 runner token)
[获取 specific 类型的 runner token](#获取 specific 类型的 runner token)
[3.3 进行注册](#3.3 进行注册)
[四、GitLab Runner 命令](#四、GitLab Runner 命令)
[4.1 启动命令](#4.1 启动命令)
[4.2 注册命令](#4.2 注册命令)
[4.3 服务管理](#4.3 服务管理)
[5.1 编写一个简单的 yml 文件](#5.1 编写一个简单的 yml 文件)
[5.2 测试流水线](#5.2 测试流水线)
一、gitlab-runner 简介
GitLab Runner 是一个开源项目,用于运行您的作业并将结果发送回GitLab。它与 Gitlab CI 结合使用, Gitlab CI 是 Gitlab 随附的用于协调作业的开源持续集成服务。
1.1 要求
-
GitLab Runner 是用 Go 编写的,可以作为一个二进制文件运行,不需要特定于语言的要求。它旨在在 GNU/Linux,macOS 和 Windows 操作系统上运行。只要您可以在其他操作系统上编译 Go 二进制文件,其他操作系统就可能会运行。
-
如果要使用 Docker,请安装最新版本。GitLab Runner 需要最少的 Docker
v1.13.0
。 -
GitLab Runner 版本应与 GitLab 版本同步。尽管较旧的 Runner 仍可以使用较新的 GitLab 版本,反之亦然,但在某些情况下,如果版本存在差异,则功能可能不可用或无法正常工作。在次要版本更新之间可以保证向后兼容性,但是请注意,GitLab 的次要版本更新会引入新功能,这些新功能将要求 Runner 在同一次要版本上使用。
1.2 特点
-
允许运行:
-
同时执行多个作业。
-
对多个服务器(甚至每个项目)使用多个令牌。
-
限制每个令牌的并行作业数。
-
-
可以运行作业:
-
在本地。
-
使用 Docker 容器。
-
使用 Docker 容器并通过 SSH 执行作业。
-
使用 Docker 容器在不同的云和虚拟化管理程序上自动缩放。
-
连接到远程 SSH 服务器。
-
-
用 Go 编写并以单个二进制文件的形式分发,而没有其他要求。
-
支持 Bash,Windows Batch 和 Windows PowerShell。
-
在 GNU / Linux,macOS 和 Windows(几乎可以在任何可以运行 Docker 的地方)上运行。
-
允许自定义作业运行环境。
-
自动重新加载配置,无需重启。
-
易于使用的设置,并支持 Docker,Docker-SSH,Parallels 或 SSH 运行环境。
-
启用 Docker 容器的缓存。
-
易于安装,可作为 GNU / Linux,macOS 和 Windows 的服务。
-
嵌入式 Prometheus 指标 HTTP 服务器。
-
裁判工作者监视 Prometheus 度量标准和其他特定于工作的数据并将其传递给 GitLab。
二、GitLab Runner 安装
2.1 使用 GItLab 官方仓库安装
参考官方文档:使用官方极狐GitLab 仓库安装极狐GitLab Runner | 极狐GitLab
2.2 使用 deb/rpm 软件包
清华源下载地址:Index of /gitlab-runner/yum/el7/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
# 安装
rpm -ivh gitlab-runner-15.3.3-1.x86_64.rpm
# 启动服务
systemctl start gitlab-runner
2.3 在容器中运行 GitLab Runner
参考官方文档:在容器中运行极狐GitLab Runner | 极狐GitLab
三、GitLab Runner 注册
官方参考文档:注册 Runner | 极狐GitLab
大概过程:获取 runner token -> 进行注册
3.1 GitLabRunner 类型
-
shared:运行整个平台项目的作业(gitlab)
-
group:运行特定 group 下的所有项目的作业(group)
-
specific: 运行指定的项目作业(project)
-
locked:无法运行项目作业
-
paused:不会运行作业
3.2 获取 runner token
获取 shared
类型 runner token
需要管理员访问极狐 GitLab 管理中心并点击 概览 > Runner。
获取 group
类型的 runner token
访问 设置 > CI/CD 并展开 Runner
获取 specific
类型的 runner token
进入具体的项目 -> Settings -> CI/CD -> Runners -> Specific Runners
3.3 进行注册
方式一:交互式注册
官方步骤:注册 Runner | 极狐GitLab
[root@run01 ~]# gitlab-runner register
Runtime platform arch=amd64 os=linux pid=3293 revision=f767c145 version=15.3.3
Running in system-mode.
Enter the GitLab instance URL (for example, https://gitlab.com/):
http://192.168.170.133/
Enter the registration token:
GR1348941sUxNyye1qD4HcTSW-TMw
Enter a description for the runner:
[run01]: test
Enter tags for the runner (comma-separated):
build
Enter optional maintenance note for the runner:
this is d test
Registering runner... succeeded runner=GR1348941sUxNyye1
Enter an executor: custom, parallels, shell, docker-ssh+machine, docker, docker-ssh, ssh, virtualbox, docker+machine, kubernetes:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
Configuration (with the authentication token) was saved in "/etc/gitlab-runner/config.toml"
方式二:直接注册
参考官方文档:注册 Runner | 极狐GitLab
效果:注册了一个指定的 runner 并且是锁定状态的
四、GitLab Runner 命令
GitLab Runner 包含一组命令,可用于注册,管理和运行构建。
4.1 启动命令
gitlab-runner --debug <command> # 调试模式排查错误特别有用。
gitlab-runner <command> --help # 获取帮助信息
gitlab-runner run # 普通用户模式 配置文件位置 ~/.gitlab-runner/config.toml
sudo gitlab-runner run # 超级用户模式 配置文件位置 /etc/gitlab-runner/config.toml
4.2 注册命令
gitlab-runner register # 默认交互模式下使用,非交互模式添加 --non-interactive
gitlab-runner list # 此命令列出了保存在配置文件中的所有运行程序
gitlab-runner verify # 此命令检查注册的 runner 是否可以连接,但不验证 GitLab 服务是否正在使用 runner。 --delete 删除
gitlab-runner unregister # 该命令使用 GitLab 取消已注册的 runner。
# 使用令牌注销
gitlab-runner unregister --url http://xxx/ --token t0kxx
# 使用名称注销(同名删除第一个)
gitlab-runner unregister --name test-runner
# 注销所有
gitlab-runner unregister --all-runners
4.3 服务管理
gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
# --user 指定将用于执行构建的用户
# --working-directory 指定将使用 Shell executor 运行构建时所有数据将存储在其中的根目录
gitlab-runner uninstall # 该命令停止运行并从服务中卸载 GitLab Runner。
gitlab-runner start # 该命令启动 GitLab Runner 服务。
gitlab-runner stop # 该命令停止 GitLab Runner 服务。
gitlab-runner restart # 该命令将停止,然后启动 GitLab Runner 服务。
gitlab-runner status # 此命令显示 GitLab Runner 服务的状态。当服务正在运行时,退出代码为零;而当服务未运行时,退出代码为非零。
# 也可以是使用 systemctl 管理 runner
五、运行流水线任务(效果演示)
5.1 编写一个简单的 yml 文件
在 gitlab 仓库中项目根目录添加一个 .gitlab-ci.yml 文件,文件内容如下:
stages:
- build
- deploy
build:
stage: build
tags:
- build
only:
- master
script:
- echo "mvn clean "
- echo "mvn install"
deploy:
stage: deploy
tags:
- deploy
only:
- master
script:
- echo "hello deploy"
这个流水线共包含两个 job,分别是 build 和 deploy
。
build
job 包含一个 stage build
。 build
stage 配置了在具有 build
标签的 runner 中运行,限制为 master 分支提交,运行构建命令。
deploy
job 包含一个 stage deploy
。 deploy
stage 配置了在具有 deploy
标签的 runner 中运行,限制为 master 分支提交,运行发布命令。
5.2 测试流水线
编写好 yml 文件之后,开始模拟在 master 分支提交代码,此时会发现流水线正在运行。
上一篇文章:【基于 GitLab 的 CI/CD 实践】01、GitLab CI/CD 基础概念_Stars.Sky的博客-CSDN博客
下一篇文章:【基于 GitLab 的 CI/CD 实践】03、GitLab Pipeline 实践(上)_Stars.Sky的博客-CSDN博客