0%

安装 GitLab Runner

使用官方的 GitLab 存储库安装 GitLab Runner


前言

需要为项目实现基于 Gitlab 的 CI/CD。gitlab-runner 是具体执行 CI/CD 的核心。因此需要搭建一个 GitLab Runner

文中大部分参考于官方的文档《Install GitLab Runner using the official GitLab repositories》

环境介绍

  • Linux 环境 Debian
  • Docker 作为执行器

安装 Docker

这边 Runner 需要支持 Docker 系列的执行器,也就是构建需要在容器里执行,那么需要先安装 Docker 环境

1
2
3
curl -sSL https://get.docker.com/ | sh
/etc/init.d/docker status
[ ok ] Docker is running.

安装 Runner

GitLab Runner 支持多平台、多方式安装,包括GNU/Linux, macOS, FreeBSD 和Windows平台的安装,以及支持基于docker的自动扩展式安装

下面使用官方的 GitLab 存储库在 Debian 平台安装GitLab Runner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 添加GitLab的官方存储库
# For Debian/Ubuntu/Mint
$ curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash

# 安装特定版本的 GitLab Runner
# for DEB based systems
$ apt-cache madison gitlab-runner
$ apt-get install gitlab-runner=11.11.4

# 确认安装成功
$ gitlab-runner --version
Version: 11.11.4
Git revision: e828d3bc
Git branch:
GO version: go1.8.7
Built: 2019-07-07T00:29:25+0000
OS/Arch: linux/amd64

注册 Runner

注册 Runner 是将 Runner 与 GitLab 实例绑定的过程

注册 Specific Runnersr 到 GitLab 之前,需要在 Settings 中拿到 Gitlab 实例 URL 和注册 token

Settings->CI/CD->Runners->Specific Runners

接着执行下方命令会进入一个交互式的配置流程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 运行以下命令注册Runner
$ gitlab-runner register

# 输入GitLab实例URL
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
https://git-sa.nie.netease.com/

# 输入token来注册
Please enter the gitlab-ci token for this runner
xxx

# 输入Runner的描述,稍后可以在GitLab的UI中进行更改
Please enter the gitlab-ci description for this runner
alpha-runner

# 输入与Runner关联的标签,稍后可以在GitLab的UI中进行更改(在.gitlab-ci.yml中使用tags来指定相关标签的runner运行)
Please enter the gitlab-ci tags for this runner (comma separated):
alpha

# 输入Runner执行者(需要使用docker来部署服务,因此这里选择Docker作为执行程序)
Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
docker

# 如果选择Docker作为执行程序,则会要求定义默认映像,用于在.gitlab-ci.yml中未指定镜像使用默认镜像
Please enter the Docker image (eg. ruby:2.6):
dockerhub.nie.netease.com/library/debian_ci

配置 Docker

注册一个 Docker 类型的 Runner 后,如果要在该 Runner 中使用 Docker 进行构建等任务,则需要增加以下配置,以支持 docker in docker

安装好runner后,即会生成一份runner的配置文件,不同系统平台配置文件路径为:
以root用户安装的,且为 *nix 类系统(如Debian)配置文件路径为/etc/gitlab-runner/config.toml
以非root用户安装的,且为 *nix 类系统(如Debian)配置文件路径为~/.gitlab-runner/config.toml
其他系统 ./config.toml

挂载宿主docker.sock到容器内,挂载镜像registry的认证文件到容器内(如果要拉取私有镜像,则需要在容器内部署认证配置,或者在宿主配置,然后挂入容器内),修改 Docker 为 host 网络

1
2
3
4
# 修改对应runner的volumes配置
volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock", "/root/.docker/config.json:/root/.docker/config.json"]
# 在volums下添加如下一行
network_mode = "host"