gitlab runner安装配置
gitlab runner简介
简介
GitLab Runner 是一个与 GitLab CI/CD 一起使用以在管道中运行作业的应用程序
特性
GitLab Runner 具有以下功能
- 同时运行多个作业。
- 对多个服务器(甚至每个项目)使用多个令牌。
- 限制每个令牌的并发作业数。
- 可以运行作业:
- 本地。
- 使用 Docker 容器。
- 使用 Docker 容器并通过 SSH 执行作业。
- 在不同的云和虚拟化管理程序上使用具有自动缩放功能的 Docker 容器。
- 连接到远程 SSH 服务器。
- 用 Go 编写并作为单个二进制文件分发,没有任何其他要求。
- 支持 Bash、PowerShell Core 和 Windows PowerShell。
- 适用于 GNU/Linux、macOS 和 Windows(几乎可以在任何可以运行 Docker 的地方)。
- 允许自定义作业运行环境。
- 无需重新启动即可自动重新加载配置。
- 易于使用的设置,支持 Docker、Docker-SSH、Parallels 或 SSH 运行环境。
- 启用 Docker 容器的缓存。
- 易于安装为 GNU/Linux、macOS 和 Windows 的服务。
- 嵌入式 Prometheus 指标 HTTP 服务器。
- Referee workers监控 Prometheus 指标和其他特定于工作的数据并将其传递给 GitLab。
runner 执行流程

- Runner向
/api/v4/runners发送POST请求,请求里带有注册Token - 注册成功后返回
runner_token - Runner通过循环向
/api/v4/rquest发送POST请求,请求里带上runner_token - 认证通过后接口返回带有任务信息的
payload和任务相关的job_token - 然后将任务信息发送给执行器,执行器使用
job_token来 - 克隆所需的代码
- 下载配置或组件
- 执行器执行完成后,返回任务输出和任务状态信息
Runner向GitLab返回任务输出、任务状态以及job_token
gitlab runner相关术语
-
GitLab Runner :
安装在目标计算平台上执行 GitLab CI 作业的应用程序,用来执行 GitLab CI 的流水线任务(CI Job),也就是执行
.gitlab-ci.yml中定义的工作 -
runner configuration :
指的是
config.toml配置文件中的一个[[runner]]条目,每个[[runner]]会在 GitLab 的 Web 页面中显示为一个 Runner,且可以绑定不同的项目或标签 -
runner manager :
是 GitLab Runner 主程序启动后,负责读取
config.toml并并发运行多个 Runner 配置的后台进程 -
runner :
是具体去执行 CI 任务的进程
如果你使用的是
shell或dockerexecutor,它就在本地运行如果是
kubernetes或docker-autoscalerexecutor,它会在远程(比如 K8s 的 Pod 或新建的 VM)上运行 -
machine :
是指 Runner 执行任务所在的计算环境,比如一个虚拟机或一个 K8s Pod
每台机器都会被自动分配一个唯一的、持久的 Machine ID
即使多个机器用了相同的 Runner 配置,它们在 UI 上也可以区分开来,但会显示为属于同一个配置分组

安装gitlab runner
gitlab runner支持多种安装方式,具体可以查看官方文档,这里我们选择使用helm chat模版在k8s中安装
添加仓库
helm repo add gitlab https://charts.gitlab.io
查看chat
在下载前可以通过如下命令获取 Helm Chart 和 GitLab Runner 之间的版本映射
$ helm search repo -l gitlab/gitlab-runner
NAME CHART VERSION APP VERSION DESCRIPTION
gitlab/gitlab-runner 0.77.2 18.0.2 GitLab Runner
gitlab/gitlab-runner 0.77.1 18.0.1 GitLab Runner
gitlab/gitlab-runner 0.77.0 18.0.0 GitLab Runner
gitlab/gitlab-runner 0.76.2 17.11.2 GitLab Runner
gitlab/gitlab-runner 0.76.1 17.11.1 GitLab Runner
gitlab/gitlab-runner 0.76.0 17.11.0 GitLab Runner
gitlab/gitlab-runner 0.75.1 17.10.1 GitLab Runner
gitlab/gitlab-runner 0.75.0 17.10.0 GitLab Runner
gitlab/gitlab-runner 0.74.3 17.9.3 GitLab Runner
gitlab/gitlab-runner 0.74.2 17.9.2 GitLab Runner
gitlab/gitlab-runner 0.74.1 17.9.1 GitLab Runner
gitlab/gitlab-runner 0.74.0 17.9.0 GitLab Runner
gitlab/gitlab-runner 0.73.5 17.8.5 GitLab Runner
gitlab/gitlab-runner 0.73.4 17.8.4 GitLab Runner
gitlab/gitlab-runner 0.73.3 17.8.3 GitLab Runner
......
下载chat
可以通过 --version= 指定要下载的版本,不指定默认下载最新版
这里选择下载 0.77.2 版本,和gitlab版本保持一致
export RUNNER_VERSION=0.772
helm pull gitlab/gitlab-runner --version=$RUNNER_VERSION
解压缩包
tar xf gitlab-runner-$RUNNER_VERSION.tgz
目录结构如下
$ tree gitlab-runner/
gitlab-runner/
├── CHANGELOG.md
├── Chart.yaml
├── CONTRIBUTING.md
├── DEVELOPMENT.md
├── LICENSE
├── Makefile
├── NOTICE
├── README.md
├── templates
│ ├── _env_vars.tpl
│ ├── _helpers.tpl
│ ├── configmap.yaml
│ ├── deployment.yaml
│ ├── extra-manifests.yaml
│ ├── hpa.yaml
│ ├── ingress-session-server.yaml
│ ├── NOTES.txt
│ ├── role-binding.yaml
│ ├── role.yaml
│ ├── secrets.yaml
│ ├── service-account.yaml
│ ├── service-session-server.yaml